草庐IT

go-mocket

全部标签

go - 我应该使用同步 channel 还是阻塞 channel ?

我有几个go例程,我使用无缓冲channel作为同步机制。我想知道这是否有任何问题(例如,与WaitGroup实现相比)。我知道的一个已知的“缺点”是,两个go例程可能会一直阻塞,直到第3个(最后一个)例程完成,因为channel没有缓冲,但我不知道内部结构/什么这真的意味着。funcmain(){chan1,chan2,chan3:=make(chanbool),make(chanbool),make(chanbool)gofn(chan1)gofn(chan2)gofn(chan3)res1,res2,res3:= 最佳答案 这

go - 在标准库中查找类型

使用这个函数(构造函数):funcNewDecoder(rio.Reader)*json.Decoder如何识别标准库中的io.Reader?我知道os.Stdin是一个,但是您如何在标准库中找到其他阅读器? 最佳答案 除非在GoDocs中搜索io.Reader(https://golang.org/search?q=io.Reader)或使用Google做类似的事情,否则您必须编写一个程序来解析Go标准库。也许更有用的查询途径是,告诉我们您想要完成什么。 关于go-在标准库中查找类型,

http - 如何在 go lang 的 Http Response 中打印一个 Struct

我正在使用POSTMAN在golang中处理POST请求。我希望以结构格式(json数据结构)显示响应。为了显示普通字符串,我使用了rw.Write([]byte(fmt.Sprintf("Hello,%s!",t.Name)))如何在响应体中显示Struct?(使用rw.write方法)fmt.Printf("%+v\n",m)输出到{ID:1Name:JohnSmithAddress:123MainStCity:SanFranciscoState:CAZip:94113坐标:{纬度:37.7917618经度:-122.3943405}}这就是我想要在Postman响应中准确显示的内

python - 使用 `gopy` ,如何正确地将 []string 从 Python 传递给 Go?

我的Go代码是:funcTest(websites[]string){fmt.Print("test")}我使用gopybuild生成httpget.so文件然后我尝试在我的Python代码中加载并使用此模块httpget.so:importhttpgetprintdir(httpget)httpget.Test(["aaaa"])但是调用该函数会导致Go端出现panic:panic:runtimeerror:invalidmemoryaddressornilpointerdereference[signal0xbcode=0x1addr=0x1pc=0x103998688]gorou

go - golang中如何传递变量

packagemainimport("fmt""bufio""os""strconv""math")funcmain(){varinpA=bufio.NewScanner(os.Stdin)varinpB=bufio.NewScanner(os.Stdin)varinpC=bufio.NewScanner(os.Stdin)fmt.Print("inputAvalue:")inpA.Scan()fmt.Print("inputBvalue:")inpB.Scan()fmt.Print("inputCvalue:")inpC.Scan()cal(inpA.Text(),inpB.Text

go - 当指向结构的指针被替换时,GC 的行为如何

我正在学习Go,并且正在阅读图书馆中的示例。我发现一些示例正在使用:typeMyTypestruct{Codestring//...}funcmain(){myType:=&MyType{...}//...myType=&MyType{...}}基本上他们是在重用变量。我知道&MyType{..}返回一个指针,稍后我可以替换该指针。之前指向的内存会发生什么。GC会回收该内存还是我会浪费该内存。也许这是一个愚蠢的问题,我什么都不担心,但我正在尝试学习Go来构建性能API:) 最佳答案 内存将被垃圾收集器回收。如果你想替换结构你可以这样

go - 使用结构成员而不是结构本身

所以这与tarm'sGoSerialPackage有关.我试图用它从串口中读取以“\r\n”结尾的字符串。虽然它没有内置函数,但我发现了thisanswer并从那里开始工作(在创建的端口上使用具有自定义拆分功能的扫描仪)。现在我的问题是,为什么这行得通?端口结构如下(来自包源码):typePortstruct{//Weintentionlydonotusean"embedded"structsothatwe//don'texportFilef*os.File}所以文件指针只是Port类型的一个字段,没有嵌入什么的。但下面的代码有效:funchandler(port*serial.Por

go - 在同一功能中使用 channel 发送和接收

如何在同一个函数中创建一个2-waychannel(我不知道这是不是正确的术语)。如果我有以下代码,那么:funcserver(a还有其他实现方法吗?感谢任何帮助。 最佳答案 正如@Warrior评论的那样:在上面提到的代码中,带channel的方向指针限制函数在该channel上执行任何其他事件,而不是允许的事件。所以,制作它:funcserver(achanstring){代替funcserver(a将允许函数通过同一channel发送和接收数据。 关于go-在同一功能中使用chan

go - 以下哪些是 Go 中用于控制循环的有效关键字?

我看到这个问题的正确答案是“forandrange”。但是for语句是Go中唯一可用的循环语句,并且range关键字允许您迭代列表的项目,如数组或映射。为了理解它,您可以将range关键字翻译成foreachindexof。//forlooppackagemainimport"fmt"funcmain(){fori:=0;i 最佳答案 我认为问题是关于不同形式的For循环:简单的循环变体工作示例:packagemainimport"fmt"funcmain(){//0123456789fori:=0;i对于数组、slice、字符串、

go - HTTP 定时请求 Golang

我是Go的新手,正在尝试向多个http/https服务器生成多个请求,以检查每个Web服务器的响应时间和状态。我将URL存储在一个文本文件中,之后我决定在我的代码中添加一个自动收报机,它将在一定时间后继续在每个URL上生成这些请求(时间量以秒为单位,在每个URL旁边键入并用制表符隔开)。当我开始扫描文件中的时间时,一切都变得复杂起来,我无法找到我的错误。这是我的Go代码:packagemainimport("fmt""io/ioutil""log""net/http""strconv""strings""sync""time")funcget_resp_time(urlstring){