Questions tagged «go»

Go是一种开源编程语言。它是静态类型的,具有从C松散派生的语法,添加了自动内存管理,类型安全性,一些动态类型输入功能,其他内置类型,例如可变长度数组(称为slices)和键值映射,以及大型标准库。

5
如何收听N个频道?(动态选择语句)
要开始执行两个goroutine的无限循环,我可以使用以下代码: 收到味精后,它将启动一个新的goroutine并永远继续下去。 c1 := make(chan string) c2 := make(chan string) go DoStuff(c1, 5) go DoStuff(c2, 2) for ; true; { select { case msg1 := <-c1: fmt.Println("received ", msg1) go DoStuff(c1, 1) case msg2 := <-c2: fmt.Println("received ", msg2) go DoStuff(c2, 9) } } 我现在想对N个goroutine具有相同的行为,但是在这种情况下select语句将如何显示? 这是我开始的代码位,但是我对如何编写select语句感到困惑 numChans := 2 //I …
116 go 

3
在Go中的空白处分割字符串?
给定一个输入字符串,例如" word1 word2 word3 word4 ",在Go中将其拆分为字符串数组的最佳方法是什么?请注意,每个单词之间可以有任意数量的空格或Unicode空格字符。 在Java中,我只会使用someString.trim().split("\\s+")。 (注意:在Go中使用正则表达式可能重复的Split字符串并不能提供任何高质量的答案。请提供实际示例,而不仅仅是提供指向regexp或strings包引用的链接。)
115 regex  go 

7
在Go中提取子字符串
我正在尝试从控制台(包括空格)读取整行,然后对其进行处理。使用bufio.ReadString,将换行符与输入一起读取,因此我想出了以下代码来修剪换行符: input,_:=src.ReadString('\n') inputFmt:=input[0:len(input)-2]+"" //Need to manually add end of string 有没有更惯用的方法来做到这一点?也就是说,是否已经有一个库在为您提取子字符串时处理结尾的空字节? (是的,我知道在go readline-> string中已经有一种不用换行符就能读取行的方法,但是我正在寻找更多用于优雅的字符串操作的方法。)
114 go  substring 

4
Go中文件名的约定是什么?
我可以在Go中找到命名包的约定:单词之间没有下划线,所有内容都小写。 这个约定也适用于文件名吗? 您是否也像在Java类中那样将一个结构放在一个文件中,然后以该结构命名? 当前,如果我具有结构WebServer,则将其放在文件web_server.go中。

3
如何将interface {}转换为字符串?
我正在使用docopt来解析命令行参数。这样行之有效,并生成一张地图,例如 map[<host>:www.google.de <port>:80 --help:false --version:false] 现在,我想将host和port值连接到一个字符串,并在两个值之间插入一个冒号。基本上,诸如: host := arguments["<host>"] + ":" + arguments["<port>"] 不幸的是,这不起作用,因为我收到了错误消息: 无效的操作:arguments [“”] +“:”(类型不匹配的接口{}和字符串) 因此,显然我需要将从映射中获取的值(就是interface{},所以可以是任意值)转换为字符串。现在我的问题是,我该怎么做?
114 go 

4
布局Go项目的明智方法是什么?
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 去年关闭。 改善这个问题 我有一个go项目,该项目开始变得越来越复杂,并且希望以减轻痛苦的方式来布置文件系统。 是否有一些很好的例子说明什么有意义?
113 go  project 



5
Go使用哪种垃圾收集?
Go是一种垃圾回收语言: http://golang.org/doc/go_faq.html#garbage_collection 在这里,它说这是一个标志性的垃圾回收器,但是它没有深入研究细节,并且正在进行替代...但是,自Go发行以来,该段似乎没有太多更新。 它仍然是标记和扫描?是保守还是精确?它是世代相传的吗?

6
如何使用Go中的测试包进行测试设置
使用测试包时,如何进行整个测试设置过程,为所有测试奠定基础? 例如,在Nunit中有一个[SetUp]属性。 [TestFixture] public class SuccessTests { [SetUp] public void Init() { /* Load test data */ } }
111 unit-testing  go 

5
如何将go.mod中的Go模块依赖项指向存储库中的最新提交?
从v1.11开始,Go添加了对模块的支持。指令 go mod init <package name> go build 会生成go.mod和go.sum文件,其中包含找到的所有软件包依赖版本。 如果模块没有任何发行版,则使用该模块的最新提交。如果某个模块确实具有发行版,则将最新的一个作为依赖项。 但是有时我需要的功能不是发布的版本,而是该版本之后的提交。如何设置go.mod为不指向模块的发行版,而是指向模块存储库中的特定提交? 看起来我可以用go.mod手动完成 module /my/module require ( ... github.com/someone/some_module v0.0.0-20181121201909-af044c0995fe ... ) v0.0.0与上次发布的发布标记不符的地方20181121201909是提交时间戳,af044c0995fe是提交哈希?应该手动找到并输入此类信息,还是有更好的方法?
111 git  go  module 

3
Go为什么有“ goto”语句
我惊讶地发现Go带有“ goto”语句。我一直被教导说,“ goto”语句已经成为过去,并且因为它阻塞了程序的实际流程,所以它变得邪恶,并且函数或方法始终是控制流程的更好方法。 我肯定错过了什么。Google为什么要包含它?
110 go  goto 

5
单值上下文中的多个值
由于Go中的错误处理,我经常会遇到多个值函数。到目前为止,我的处理方式非常混乱,我正在寻找编写更简洁代码的最佳实践。 假设我具有以下功能: type Item struct { Value int Name string } func Get(value int) (Item, error) { // some code return item, nil } 我如何item.Value优雅地分配一个新变量。在引入错误处理之前,我的函数刚刚返回item,我可以简单地做到这一点: val := Get(1).Value 现在,我这样做: item, _ := Get(1) val := item.Value 有没有办法直接访问第一个返回的变量?

7
如何检查一个空的结构?
我定义一个结构... type Session struct { playerId string beehive string timestamp time.Time } 有时我给它分配一个空会话(因为nil不可能) session = Session{}; 然后我要检查是否为空: if session == Session{} { // do stuff... } 显然这是行不通的。我该怎么写?
110 struct  go 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.