Questions tagged «go»

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

9
init()函数何时运行?
我试图找到有关该init()函数在Go中作用的精确解释。我读了有效围棋说的话,但不确定是否完全理解它的话。我不确定的确切句子如下: 最后的意思是最后:在包中的所有变量声明评估了其初始化程序之后,将调用init,并且只有在所有导入的包都已初始化之后才对init进行评估。 什么all the variable declarations in the package have evaluated their initializers意思 这是否意味着如果在包及其文件中声明“全局”变量,则init()直到所有值都被评估后才运行,然后在运行./main_file_name时它将先运行所有的init函数,然后运行main()? 我还阅读了马克·萨默菲尔德(Mark Summerfield)的以下书籍: 如果一个程序包具有一个或多个init()函数,它们将在调用主程序包的main()函数之前自动执行。 以我的理解,init()仅当您打算运行main()时才有意义吗?或主包装。任何人都可以更准确地理解init()我
356 go  init 

12
在Go中逐行读取文件
我file.ReadLine在Go中找不到功能。我可以弄清楚如何快速编写一个,但是我只是想知道我是否在这里忽略了一些东西。如何逐行读取文件?
334 string  file  parsing  go  line 

4
指针与参数和返回值中的值
在Go中,有多种方法可以返回struct值或其片段。对于个人,我已经看到: type MyStruct struct { Val int } func myfunc() MyStruct { return MyStruct{Val: 1} } func myfunc() *MyStruct { return &MyStruct{} } func myfunc(s *MyStruct) { s.Val = 1 } 我了解两者之间的区别。第一个返回该结构的副本,第二个返回指向在函数内创建的结构值的指针,第三个期望传入现有结构并覆盖该值。 我已经看到所有这些模式都可以在各种情况下使用,我想知道关于这些的最佳实践是什么。什么时候使用?例如,第一个可能适用于小型结构(因为开销很小),第二个适用于较大的结构。第三,如果您想提高内存效率,因为您可以轻松地在调用之间重用单个结构实例。有什么最佳实践,何时使用? 同样,关于切片的相同问题: func myfunc() []MyStruct { return []MyStruct{ MyStruct{Val: 1} } } func myfunc() []*MyStruct { return []MyStruct{ …
327 pointers  go 

18
GOPATH和GOROOT的值应该是多少?
我正在尝试像这样安装doozer: $ goinstall github.com/ha/doozer 我得到这些错误。 goinstall: os: go/build: package could not be found locally goinstall: fmt: go/build: package could not be found locally goinstall: io: go/build: package could not be found locally goinstall: reflect: go/build: package could not be found locally goinstall: math: go/build: package could not be found locally …
323 go  gopath 

3
遍历地图的所有键
有没有一种方法可以获取Go语言映射中所有键的列表?元素的数量由给出len(),但是如果我有类似的地图: m := map[string]string{ "key1":"val1", "key2":"val2" }; 如何遍历所有键?
315 loops  dictionary  go 


9
C的三元运算符的惯用Go等效项是什么?
在C / C ++(以及该家族的许多语言)中,根据条件声明和初始化变量的常见用法使用三元条件运算符: int index = val > 0 ? val : -val Go没有条件运算符。实现与上述相同代码的最惯用方式是什么?我来到以下解决方案,但似乎很冗长 var index int if val > 0 { index = val } else { index = -val } 有更好的东西吗?


8
如何使用Go从文件读/写文件?
我一直在尝试自己学习Go,但是在尝试读取和写入普通文件时遇到了麻烦。 我可以说到最远inFile, _ := os.Open(INFILE, 0, 0),但是实际上获取文件的内容没有任何意义,因为read函数将a []byte作为参数。 func (file *File) Read(b []byte) (n int, err Error)
284 file  go 

13
如何在Go中处理配置
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 改善这个问题 我是Go编程的新手,我想知道:处理Go程序的配置参数的首选方法是什么(在其他情况下,这种东西可能会使用属性文件或ini文件)?

5
如何将持续时间乘以整数?
为了测试并发的goroutine,我在函数中添加了一行代码,以使其花费随机的时间返回(最多一秒钟) time.Sleep(rand.Int31n(1000) * time.Millisecond) 但是,当我编译时,出现此错误 。\ crawler.go:49:无效操作:rand.Int31n(1000)* time.Millisecond(int32和time.Duration类型不匹配) 有任何想法吗?如何乘以持续时间?
284 go  time 



11
如何从控制台的标准输入中读取?
我想从命令行读取标准输入,但是在提示我输入之前,我的尝试以结束程序退出而告终。我正在寻找C#中的Console.ReadLine()等效项。 这是我目前拥有的: package main import ( "bufio" "fmt" "os" ) func main() { reader := bufio.NewReader(os.Stdin) fmt.Print("Enter text: ") text, _ := reader.ReadString('\n') fmt.Println(text) fmt.Println("Enter text: ") text2 := "" fmt.Scanln(text2) fmt.Println(text2) ln := "" fmt.Sscanln("%v", ln) fmt.Println(ln) }
270 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.