Questions tagged «go»

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

2
遍历模板中的地图
我正在尝试显示健身课程清单(瑜伽,普拉提等)。对于每个班级类型,都有几个班级,因此我想将所有瑜伽班和所有普拉提班归为一组,依此类推。 我做了这个功能来切片并绘制它的地图 func groupClasses(classes []entities.Class) map[string][]entities.Class { classMap := make(map[string][]entities.Class) for _, class := range classes { classMap[class.ClassType.Name] = append(classMap[class.ClassType.Name], class) } return classMap } 现在的问题是,根据http://golang.org/pkg/text/template/,我该如何遍历它,您需要以.Key格式访问它,我不知道键(除非我也传递了一个切片模板中的键数)。如何在我的视图中解包此地图。 我目前所拥有的是 {{ . }} 显示如下: map[Pilates:[{102 PILATES ~/mobifit/video/ocen.mpg 169 40 2014-05-03 23:12:12 +0000 UTC 2014-05-03 23:12:12 +0000 UTC 1899-12-30 00:00:00 +0000 UTC {PILATES Pilates …
91 go  go-templates 


2
如何将字符串转换为小写形式?
如何将字符串转换为小写形式? 我觉得它必须具有内置功能,但是我找不到它。 我确实找到了ToLowerin "unicode/letter",但是一次只能使用一个符文。
91 go 

8
如何停止http.ListenAndServe()
我正在使用Gorilla Web Toolkit中的Mux库以及捆绑的Go http服务器。 问题在于,在我的应用程序中,HTTP服务器只是一个组件,需要自行决定停止和启动。 当我调用http.ListenAndServe(fmt.Sprintf(":%d", service.Port()), service.router)它阻塞时,似乎无法停止服务器运行。 我知道过去这一直是个问题,还是这样吗?有没有新的解决方案?
90 go 

7
如何测试恐慌?
我目前正在考虑如何编写测试,以检查给定的代码是否发生了恐慌?我知道Go曾经recover用来捕获恐慌,但是与说Java代码不同,您不能真正指定在发生恐慌时应该跳过哪些代码或您有什么问题。因此,如果我有一个功能: func f(t *testing.T) { defer func() { if r := recover(); r != nil { fmt.Println("Recovered in f", r) } }() OtherFunctionThatPanics() t.Errorf("The code did not panic") } 我真的不能说是OtherFunctionThatPanics惊慌失措而我们恢复了,还是该函数根本没有惊慌。如果没有恐慌,我该如何指定跳过哪些代码,如果有恐慌,我应如何执行?如何检查我们是否从中恢复了恐慌?
90 testing  go 

3
Go编译后的可执行文件太大的原因
我编译了一个hello world Go程序,该程序在linux机器上生成了本机可执行文件。但是我很惊讶地看到简单的Hello world Go程序的大小为1.9MB! 为什么Go中如此简单的程序的可执行文件如此庞大?
90 go  executable 

3
范围引用代替值
我看到该范围返回键和值的“副本”。有没有办法让该范围返回该商品的地址?例 package main import "fmt" type MyType struct { field string } func main() { var array [10]MyType for _, e := range array { e.field = "foo" } for _, e := range array { fmt.Println(e.field) fmt.Println("--") } } http://play.golang.org/p/AFOGG9NGpx 这里“ field”没有被修改,因为range发送了field的副本,我是否必须使用index还是有其他方法可以修改值? 谢谢阅读。
90 pointers  reference  go 

4
如何在go中导入本地包?
我是新手,正在研究要本地化的示例代码。 在原始的main.go导入语句中,它是: import ( "log" "net/http" "github.com/foo/bar/myapp/common" "github.com/foo/bar/myapp/routers" ) 现在我已经common和routers包/home/me/go/src/myapp 所以我将import语句转换为: import ( "log" "net/http" "./common" "./routers" ) 但是当我运行时,go install myapp出现以下错误: can't load package: /home/me/go/src/myapp/main.go:7:3: local import "./common" in non-local package 另外,当我在导入语句中使用commonandrouters代替./commonand./routers时,得到: myapp/main.go:7:3: cannot find package "common" in any of: /usr/local/go/src/common (from $GOROOT) /home/me/go/src/common (from $GOPATH) myapp/main.go:8:2: cannot find package …
90 go 

7
获取用户的主目录
以下是获取运行用户主目录的最佳方法吗?还是有我看过的特定功能? os.Getenv("HOME") 如果上述正确,那么是否有人知道这种方法是否可以保证在非Linux平台(例如Windows)上运行?


5
Go是否会像Java一样受到微妙的内存泄漏?
这是事实: Go语言具有垃圾回收器。 Java有垃圾回收 许多Java程序都有(微妙的或没有的)内存泄漏 作为具有内存泄漏的Java程序的示例(并非出于胆怯,这个问题可能会动摇您的信念),请参见此处有关一个名为Tomcat的小型Java程序,该程序甚至具有“查找泄漏”按钮:有没有办法以避免在Tomcat中取消部署内存泄漏? 所以我想知道:用Go编写的程序是否会表现出与某些用Java编写的程序一样的(细微或不细微的)内存泄漏?
89 java  memory-leaks  go 

5
在golang中,有一种从地图中获取值切片的好方法吗?
如果我有地图m,有没有更好的方法来获取值v的一部分,则 package main import ( "fmt" ) func main() { m := make(map[int]string) m[1] = "a" m[2] = "b" m[3] = "c" m[4] = "d" // Can this be done better? v := make([]string, len(m), len(m)) idx := 0 for _, value := range m { v[idx] = value idx++ …
89 go 

3
在Go中,地图是通过值传递还是通过引用传递?
Go中的地图是否通过值或引用传递? 始终可以将函数定义为以下形式,但这是一个过大的杀伤力吗? func foo(dat *map[string]interface{}) {...} 相同的返回值问题。我应该返回指向地图的指针还是将地图作为值返回? 这样做的目的当然是避免不必要的数据复制。
89 go 

3
遍历golang映射
我有一个类型的地图: map[string]interface{} 最后,我要创建类似的内容(使用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 请帮忙。
89 map  go  loops 

6
如何在github仓库的特定标签上“获取”
我正在尝试使用编译InfluxDB数据库(版本v0.8.8) go get github.com/influxdb/influxdb 但这拉了master分支,我需要v0.8.8标签。 我已尝试做: go get github.com/influxdb/influxdb/releases/tag/v0.8.8但是失败说找不到。 我也试图做一个正规go get的主分支,然后手动检查出使用标签git中GOPATH/src/github...以设置corret版本。 使用最后一种方法的问题是,当我尝试使用其拉取依赖项时,go get -u -f ./...它会尝试在master分支中找到它们,而其中的一些在master分支中不存在... TL; DR:go get在特定的github标记上执行,并提取正确的依赖项。
89 git  go  github 

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.