Tag:

Go中的构造函数

我有一个结构,我希望它有一些合理的默认值初始化。 通常情况下,这里要做的事情是使用构造函数,但是由于go在传统意义上并不是真正的OOP,所以它们不是真正的对象,也没有构造函数。 我注意到init方法,但是在包级别。 是否还有其他类似的结构级别可以使用? 如果不是Go的这种types的东西被接受的最佳做法?

Golang – 从地图上获取一部分密钥

在Go中有没有更简单/更好的方法来从一张地图中获得一个键? 目前我正在迭代地图并将键复制到一个切片: i := 0 keys := make([]int, len(mymap)) for k := range mymap { keys[i] = k i++ }

为什么没有在Go的generics?

免责声明:我现在只玩了一天,所以很有可能我错失了很多。 有谁知道为什么没有真正的支持generics/模板/ whats inAName在Go? 所以有一个通用map ,但这是由编译器提供的,而Go程序员不能编写自己的实现。 所有关于使Go尽可能正交的讨论,为什么我可以使用generics而不是创build一个新的? 特别是当涉及到函数式编程时,有lambda函数,甚至闭包,但是对于一个缺乏generics的静态types系统,我该如何编写像filter(predicate, list)这样的通用高阶函数呢? 好的,链接列表等可以用牺牲types安全性来完成。 对于SO / Google的快速search没有透露任何见解,它看起来像generics,如果有的话,将被添加到Go作为事后的想法。 我确实相信汤普森比爪哇人做得更好,但是为什么要把generics放在一边呢? 还是他们计划,只是没有实施?

Golang随机数发生器如何正确播种

我试图在Go中生成一个随机string,这里是我迄今为止写的代码: package main import ( "bytes" "fmt" "math/rand" "time" ) func main() { fmt.Println(randomString(10)) } func randomString(l int) string { var result bytes.Buffer var temp string for i := 0; i < l; { if string(randInt(65, 90)) != temp { temp = string(randInt(65, 90)) result.WriteString(temp) i++ } } return result.String() } func randInt(min int, max […]

如何乘以整数持续时间?

为了testing并发的例程,我在函数中添加了一行,使得它随机返回一个时间(最多一秒) time.Sleep(rand.Int31n(1000) * time.Millisecond) 但是当我编译时,我得到了这个错误 。\ crawler.go:49:无效操作:rand.Int31n(1000)* time.Millisecond(不匹配typesint32和time.Duration) 有任何想法吗? 我怎样才能延长时间?

Golang运算符之间的区别:= vs =

在去=和:=运算符之间有什么区别? 他们都似乎是分配? 这可能是显而易见的,但我似乎无法在文档中find它:

Golang应用程序自动构build版本

每次编译Go应用程序时是否可以自动递增次要版本号? 我想在自己的程序中设置一个版本号,用一个自动增量部分: $ myapp -version MyApp version 0.5.132 0.5是我设置的版本号,132是每次二进制编译时自动递增的值。 这可能在Go吗?

如何在golang中使用自定义的包?

我正在尝试在Go中创build和使用自定义的包。 这可能是非常明显的,但我无法find有关这方面的信息。 基本上,我有这两个文件在同一个文件夹中: mylib.go package mylib type SomeType struct { } main.go package main import ( "mylib" ) func main() { } 当我尝试go run main.go ,我得到这个错误: main.go:4:2: import "mylib": cannot find package 我试图运行go build mylib.go第一,但它似乎没有做任何事情(没有文件生成,没有错误信息)。 所以任何想法我怎么能做到这一点?

无法下载,$ GOPATH没有设置

我想安装json2csv使用go get github.com/jehiah/json2csv但我收到此错误: package github.com/jehiah/json2csv: cannot download, $GOPATH not set. For more details see: go help go path 任何帮助如何解决这个在MacOS上?

如何在Go中使用C ++?

在新的Go语言中,如何调用C ++代码? 换句话说,如何包装我的C ++类并在Go中使用它们?