Tag:

迭代golang地图

我有一个types的地图: map[string]interface{} 最后,我开始创build类似(使用goyaml从yml文件反序列化之后) mymap = map[foo:map[first: 1] boo: map[second: 2]] 我怎样才能遍历这个地图? 我尝试了以下内容: for k, v := range mymap{ … } 但是我得到一个错误: cannot range over mymap typechecking loop involving for loop 请帮忙。

切片types

我目前正在通过优秀的Tour of Go进行工作 。 我用下面的解决方法完成了一个练习(#45): func Pic(dx, dy int) [][]uint8 { pic := make([][]uint8, dy) /* type declaration */ for i := range pic { pic[i] = make([]uint8, dx) /* again the type? */ for j := range pic[i] { pic[i][j] = uint8((i+j)/2) } } return pic } 我不明白为什么我必须使用两次使用uint8types的make语句(请参阅代码段中的注释)。 这似乎是多余的,但我不知道如何以其他方式做到这一点。

在Go中分离unit testing和集成testing

在GoLang(testify)中是否有一个确定的分离unit testing和集成testing的最佳实践? 我有混合的unit testing(不依赖于任何外部资源,因此运行速度非常快)和集成testing(这依赖于任何外部资源,从而运行速度较慢)。 所以,当我说go test时候,我想能够控制是否包含集成go test 。 最直接的技术似乎是在main中定义一个-integrate标志: var runIntegrationTests = flag.Bool("integration", false , "Run the integration tests (in addition to the unit tests)") 然后在每个集成testing的顶部添加一个if语句: if !*runIntegrationTests { this.T().Skip("To run this test, use: go test -integration") } 这是我能做的最好的吗? 我搜查了certificate文件,看是否有一个命名约定或者为我完成了这个,但没有find任何东西。 我错过了什么吗?

如何parsinggolang中的unix时间戳

我试图parsing一个Unix 时间戳,但我超出了范围的错误。 这对我来说没有什么意义,因为布局是正确的(如在golang文档中): package main import "fmt" import "time" func main() { tm, err := time.Parse("1136239445", "1405544146") if err !=nil{ panic(err) } fmt.Println(tm) } 玩

如何使用go get导入特定版本的软件包?

通过告诉npm从package.json甚至直接从控制台直接安装那个版本的lib,从一个Node环境来我安装一个供应商lib的特定版本到工程文件夹( node_modules )中,就像这样: $ npm install express@4.0.0 然后我用我的项目中的那个版本的包来导入: var express = require('express'); 现在,我想要去做同样的事情。 我怎样才能做到这一点? 是否可以安装特定版本的软件包? 如果是这样,使用集中的$GOPATH ,我怎样才能导入一个版本,而不是另一个版本? 我会做这样的事情: $ go get github.com/wilk/uuid@0.0.1 $ go get github.com/wilk/uuid@0.0.2 但是,在import过程中,我怎样才能有所作为呢?

Go的头等function

我来自具有一streamfunction支持的JavaScript。 例如,您可以: 将一个函数作为parameter passing给另一个函数 从函数返回一个函数。 有人能给我一个例子,说明我会如何在Go上做这个事情吗?

'gc'和'gccgo'之间的主要区别是什么?

两个stream行的Go编译器“gc”和“gccgo”之间的主要区别是什么? build立性能? 运行性能? 命令行选项? 授权? 我并不是在寻求最好的意见,只是对其差异的基本概述,所以我可以决定哪一个最适合我的需求。

去build立:“无法find包”(即使GOPATH设置)

即使我已经正确设置了GOPATH,我仍然无法“去build造”或“跑步”find我自己的软件包。 我究竟做错了什么? 非常感谢! $ echo $GOROOT /usr/local/go $ echo $GOPATH /home/mitchell/go $ cat ~/main.go package main import "foobar" func main() { } $ cat /home/mitchell/go/src/foobar.go package foobar $ go build main.go main.go:3:8: import "foobar": cannot find package

Go中的ToString()函数

strings.Join函数仅使用strings.Join片段: s := []string{"foo", "bar", "baz"} fmt.Println(strings.Join(s, ", ")) 但是能够传递实现ToString()函数的任意对象将会很好。 type ToStringConverter interface { ToString() string } 在Go中是否有这样的东西,或者我必须用ToString方法来修饰现有types,比如int ,并且写一个包装strings.Join的包装器。 func Join(a []ToStringConverter, sep string) string

去json.Marshal(结构)返回“{}”

type TestObject struct { kind string `json:"kind"` id string `json:"id, omitempty"` name string `json:"name"` email string `json:"email"` } func TestCreateSingleItemResponse(t *testing.T) { testObject := new(TestObject) testObject.kind = "TestObject" testObject.id = "f73h5jf8" testObject.name = "Yuri Gagarin" testObject.email = "Yuri.Gagarin@Vostok.com" fmt.Println(testObject) b, err := json.Marshal(testObject) if err != nil { fmt.Println(err) } fmt.Println(string(b[:])) } 这是输出: [ `go […]