草庐IT

go-import

全部标签

go - 除了 Gosched 还有什么?

下面的代码片段,packagemainimport("fmt""runtime")funcmain(){runtime.GOMAXPROCS(1)varsstringdone:=make(chanbool)gofunc(){fmt.Scanln(&s)fmt.Println(s)done运行它,快速输入几个字符,例如abcd在for循环结束之前;最后点击Enter。据我所知,for循环中没有可用的yield点用于Gosched将主goroutine切换到子例程,为什么它迅速甚至在for循环完成之前就打印了abcd?abcd10000000000abcd 最佳

go - 多个Http.Get随机挂起

我正在尝试学习Golang并进行了一个简单的项目来调用所有craigslist城市并查询它们以进行特定搜索。在下面的代码中,我删除了listingmap中的所有链接,但那里有超过400个链接。所以循环相当大。我认为这将是一个很好的测试,可以将我所学的知识付诸应用,但我遇到了一个奇怪的问题。有些时候,大多数Http.Get()都没有从服务器获得响应,而其他时候却毫无问题地获得了所有响应。所以我开始添加打印件来显示有多少错误我们恢复了,有多少成功通过了。此外,在运行时它会随机挂起并且从不响应。该程序没有卡住,但该站点只是坐在那里尝试加载,而终端没有显示任何事件。我通过在恢复后推迟清理来确保

go - 如何在中间件go-chi中获取路由

要检查授权,我需要知道授权中间件内的路由。我检查了go-chi的文档并这样做了:funcAuthenticator(nexthttp.Handler)http.Handler{returnhttp.HandlerFunc(func(whttp.ResponseWriter,r*http.Request){//.............next.ServeHTTP(w,r)routePattern:=chi.RouteContext(r.Context()).RoutePattern()fmt.Println("AUTHORIZATION:",routePattern,route)rou

go - 如何使用命令行在 linux 中使用 ffmpeg 将两个 wav 拼接在一起?

我已经在debian上安装了ffmpeg,我尝试了这两个命令行。同一个目录下有两个文件,分别是first.wav和second.wav第一种方法是创建一个txt文件,在a.txt里面,它们是file'first.wav'file'second.wav'我跑了ffmpeg-fconcat-ia.txt-ccopyfinal.wav然后我运行它,它可以正常工作。但我想尝试另一种方法,这是ffmpeg-i"concat:first.wav|second.wav"-ccopyfinal2.wavsdcond命令行没有错误,但它只捕获了第一个文件,final2.wav的长度与first.wav几

go - Golang 中字符串和泛型函数的映射

我正在尝试创建一个将字符串映射到函数的映射。并非所有函数都具有相同的签名。例如,我想要这样的东西:rf:=map[string]func(...interface{})error{"FirstName":validateExistence(a.FirstName,"FirstNameisrequired."),"Postcode":validateMatchPattern(a.Postcode,`^\d{5}$`,"Couldnotmatchpatternforpostcode."),"Address":validateLength(a.Address,0,35,"Addressmus

go - 将空接口(interface)转换为 Golang 中的等效类型

将动态接口(interface)转换为其等效类型。例如,如果值是int,它应该返回int,如果是string,那么它应该返回int。代码示例:varoptions=bson.M{}for_,val:=rangeconditions{varattr,operator,valueinterface{}cons:=val.(map[interface{}]interface{})forrangecons{attr=cons["attribute"]operator=cons["operator"]value=cons["value"]switchoperator{case"==":opera

go - 测试不同包中存在的方法

在写测试用例的时候发现了两个问题:有3个测试文件,其中one_test.go和two_test.go可以添加到server_suites_test.go和它运行良好。但是three_point_one_test.go的功能无法添加到server_suites_test.go中,因为无法导入_test.go。one_test.go和two_test.go使用由server_test.go创建的gRPC客户端对象。实际上,server_test.go创建了一个gRPC服务器和一个客户端,这个客户端被其他测试用例使用。当前three_point_one_test.go无法访问此客户端。因此,

go - 从 emersion/go-imap 获取原始消息

使用GO库emersion/go-imap(如果需要,使用go-message)我怎样才能获得完整的原始消息,以便我可以写入文本/eml文件? 最佳答案 最终,我找到了获取整个原始消息的方法。这是我的代码,以防对其他人有帮助packagemainimport("crypto/tls""github.com/emersion/go-imap""github.com/emersion/go-imap/client""log")funcmain(){useStartTLS:=truehost:="mail.example.com"port

go - Go sdk 记录器如何以及何时刷新?

我正在尝试确定默认/sdk记录器log.PrintYYY()函数是否在某个时间点、退出时、panic时等被刷新。我不确定是否需要找到刷新的方法记录器连接到的编写器,尤其是在使用SetOutput(...)设置输出编写器时。当然,writer接口(interface)没有flush()方法,所以不太确定如何完成。Gosdk记录器如何以及何时刷新? 最佳答案 log包不负责刷新底层io.Writer.log包可以执行类型断言以查看当前io.Writer是否具有Flush()方法,如果是则调用它,但不能保证如果多个io.Writer被“链

go - 在go中将Slice指针转换为Slice

我有一些方法可以返回slice指针中的数据,现在我必须将其转换为slice数组。如何将slice指针转换为slice数组。peerRoundState,err:=s.nodeview.PeerRoundStates()fmt.Println("Thisreturnvalueisslicepointer",peerRoundState)iferr!=nil{returnnil,err}//PeerRoundStatesthisistypeofslice.return&ConsensusResponse{RoundState:s.nodeview.RoundState().RoundSta