Questions tagged «go»

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

6
Go编程中如何从[] byte转换为int
我需要通过TCP创建一个客户端-服务器示例。在客户端,我读取了2个数字,然后将它们发送到服务器。我面临的问题是我无法从转换[]byte为int,因为通信仅接受type的数据[]byte。 有什么方法可以转换[]byte为int或可以发送int到服务器吗? 一些示例代码将不胜感激。 谢谢。


7
检查字符串是否为int
如何在Go中检查字符串值是否为整数? 就像是 v := "4" if isInt(v) { fmt.Println("We have an int, we can safely cast this with strconv") } 注意:我知道这会strconv.Atoi返回错误,但是还有其他函数可以执行此操作吗? 的问题strconv.Atoi是,它会返回7的"a7"
74 go 

4
如何打开与我的GOPATH相关的文件?
我正在io/ioutil读取一个小的文本文件: fileBytes, err := ioutil.ReadFile("/absolute/path/to/file.txt") 效果很好,但这不是完全可移植的。就我而言,我要打开的文件位于我的GOPATH中,例如: /Users/matt/Dev/go/src/github.com/mholt/mypackage/data/file.txt 由于该data文件夹位于源代码旁边,因此我只想指定相对路径: data/file.txt 但是然后我得到这个错误: 恐慌:打开数据/文件。txt:没有此类文件或目录 如何使用文件的相对路径打开文件,尤其是当它们与我的Go代码一起存在时? (请注意,我的问题特别是关于打开相对于GOPATH的文件。在Go中使用任何相对路径打开文件就像提供相对路径而不是绝对路径一样容易;文件是相对于已编译二进制文件的工作目录打开的。在这种情况下,我想打开相对于二进制文件编译位置的文件。事后看来,这是一个错误的设计决定。)
73 go  filepath 


6
显示带有标准http包的自定义404错误页面
假设我们有: http.HandleFunc("/smth", smthPage) http.HandleFunc("/", homePage) 尝试输入错误的URL时,用户会看到一个简单的“ 404页面未找到”。如何为这种情况返回自定义页面? 有关大猩猩/多路复用器的更新 对于使用纯net / http软件包的用户,可以接受答案。 如果您使用大猩猩/多路复用器,则应使用以下内容: func main() { r := mux.NewRouter() r.NotFoundHandler = http.HandlerFunc(notFound) } 并func notFound(w http.ResponseWriter, r *http.Request)根据需要实施。
73 go 

4
在Go中将数组转换为切片
这似乎是这将是整个interwebs一个相当普遍的事情,丰富的实例,但我似乎无法找到如何将一个转换的例子[32]byte来[]byte。 我有一个从外部lib调用的函数,该函数返回一个数组 func Foo() [32]byte {...} 然后,我需要将该结果传递给其他函数以进行进一步处理。 func Bar(b []byte) { ... } 不幸的是,如果我尝试打电话 d := Foo() Bar(d) 我懂了 cannot convert d (type [32]byte) to type []byte 在做 []byte(d) 好多了。我该怎么做,尤其是不创建数据副本(当我正在做的事情是传递数据时,似乎很愚蠢地复制此数据)。
73 go 

8
编码/解码URL
在Go中编码和解码整个URL的推荐方法是什么?我知道的方法url.QueryEscape和url.QueryUnescape,但他们似乎并没有被正是我期待的。具体来说,我正在寻找JavaScriptencodeURIComponent和的方法decodeURIComponent。 谢谢。
72 url  escaping  go 

3
在Golang中终止以os / exec开头的进程
有没有办法终止Golang中以os.exec开始的进程?例如(来自http://golang.org/pkg/os/exec/#example_Cmd_Start), cmd := exec.Command("sleep", "5") err := cmd.Start() if err != nil { log.Fatal(err) } log.Printf("Waiting for command to finish...") err = cmd.Wait() log.Printf("Command finished with error: %v", err) 是否可以提前3秒后终止该过程? 提前致谢
72 go 


5
如何复制地图?
我正在尝试将地图(amap)的内容复制到另一个地图()内aSuperMap,然后清除, amap以便它可以在下一次迭代/循环中获取新值。问题是,如果不清除超级地图中的引用,也无法清除地图。这是一些伪代码。 for something := range fruits{ aMap := make(map[string]aStruct) aSuperMap := make(map[string]map[string]aStruct) for x := range something{ aMap[x] = aData aSuperMap[y] = aMap delete(aMap, x) } //save aSuperMap saveASuperMap(something) } 我也尝试了一些动态的东西,但显然它会引发错误(无法分配为nil) aSuperMap[y][x] = aData 问题是如何创建关联地图?在PHP中,我只使用aSuperMap [y] [x] = aData。似乎golang没有任何明显的方法。如果我delete(aMap, x)从超级地图中删除了 它的引用,那么它也会被删除。如果我不删除它,超级地图最终将出现重复数据。基本上,在每个循环中,它将获得aMap新值加上所有旧值。
72 go 

3
如何检查空片?
我正在调用一个函数,如果没有值,该函数将返回一个空数组。 当我这样做时,它不起作用: if r == [] { fmt.Println("No return value") } 我正在使用的解决方法是: var a [0]int if r == a { fmt.Println("No return value") } 但是声明一个变量只是为了检查返回值似乎并不正确。什么是更好的方法呢?
72 go  slice 

6
最大例行程序数
我可以无痛地使用多少个goroutine?例如,维基百科说,在Erlang中,可以创建2000万个进程,而不会降低性能。 更新:我刚刚对goroutines性能进行了一些调查,并得到了这样的结果: 看起来goroutine的生存期比计算sqrt()的次数要多1000倍(对我而言约为45µs),唯一的限制是内存 Goroutine的成本4 — 4.5 KB

2
Go中的“未知转义序列”错误
我用Go编写了以下函数。这个想法是该函数具有传递给它的字符串,并返回找到的第一个IPv4 IP地址。如果找不到IP地址,则返回一个空字符串。 func parseIp(checkIpBody string) string { reg, err := regexp.Compile("[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+") if err == nil { return "" } return reg.FindString(checkIpBody) } 我得到的编译时错误是 未知的转义序列:。 如何告诉Go'.'我正在寻找的实际角色?我以为转义可以解决问题,但显然我错了。
71 regex  syntax  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.