Questions tagged «go»

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

7
有没有办法定期执行重复性任务?
有没有办法在Go中执行重复的后台任务?我在想类似Timer.schedule(task, delay, period)Java 的东西。我知道我可以使用goroutine和来做到这一点Time.sleep(),但是我想要一些容易停止的东西。 这就是我得到的,但是对我来说看起来很丑。有没有更清洁/更好的方法? func oneWay() { var f func() var t *time.Timer f = func () { fmt.Println("doing stuff") t = time.AfterFunc(time.Duration(5) * time.Second, f) } t = time.AfterFunc(time.Duration(5) * time.Second, f) defer t.Stop() //simulate doing stuff time.Sleep(time.Minute) }
148 go 

6
Go中的模拟功能
我正在通过编写一个小型个人项目来学习Go。尽管体积很小,但我还是决定进行严格的单元测试,以便从一开始就学习Go的良好习惯。 琐碎的单元测试都很好,很花哨,但是现在我对依赖项感到困惑;我希望能够用模拟函数替换一些函数调用。这是我的代码片段: func get_page(url string) string { get_dl_slot(url) defer free_dl_slot(url) resp, err := http.Get(url) if err != nil { return "" } defer resp.Body.Close() contents, err := ioutil.ReadAll(resp.Body) if err != nil { return "" } return string(contents) } func downloader() { dl_slots = make(chan bool, DL_SLOT_AMOUNT) // Init the …
147 unit-testing  mocking  go 

7
如何获取字符串中的字符数?
如何在Go中获取字符串的字符数? 例如,如果我有一个字符串,则"hello"该方法应返回5。我看到len(str)返回的字节数,而不是字符的数量,以便len("£")返回2而不是1,因为£被编码有在UTF-8的两个字节。


10
“获取”私有存储库的正确方法是什么?
$ go get在许多Google尝试之后,我正在寻找使用私有存储库的方法。 第一次尝试: $ go get -v gitlab.com/secmask/awserver-go Fetching https://gitlab.com/secmask/awserver-go?go-get=1 https fetch failed. Fetching http://gitlab.com/secmask/awserver-go?go-get=1 Parsing meta tags from http://gitlab.com/secmask/awserver-go?go-get=1 (status code 200) import "gitlab.com/secmask/awserver-go": parse http://gitlab.com/secmask/awserver-go?go-get=1: no go-import meta tags package gitlab.com/secmask/awserver-go: unrecognized import path "gitlab.com/secmask/awserver-go 是的,它没有看到元标记,因为我不知道如何提供登录信息。 第二次尝试: 跟随https://gist.github.com/shurcooL/6927554。将配置添加到.gitconfig。 [url "ssh://git@gitlab.com/"] insteadOf = https://gitlab.com/ $ go get -v …
143 git  go 


4
为什么不能将* Struct分配给* Interface?
我只是在Go导游中工作,我对指针和接口感到困惑。为什么此Go代码无法编译? package main type Interface interface {} type Struct struct {} func main() { var ps *Struct var pi *Interface pi = ps _, _ = pi, ps } 即如果Struct是一个Interface,为什么不*Struct成为一个*Interface? 我收到的错误消息是: prog.go:10: cannot use ps (type *Struct) as type *Interface in assignment: *Interface is pointer to interface, not interface
142 go 

6
交叉编译在OSX上运行?
我正在尝试在OSX上交叉编译go应用程序,以为Windows和Linux构建二进制文件。我已经阅读了所有可以在网上找到的东西。我发现的最接近的示例已发布(除了有关go-nuts邮件列表的许多未完成的讨论之外): http://solovyov.net/en/2012/03/09/cross-compiling-go/ 但它不适用于我的安装。我去了1.0.2。由于1.0.2是最近的版本,因此在我看来上述所有示例均不适用于该版本。 试图./make.bash --no-clean与ENV vars设置为386 / windows一起使用,它确实构建了go,但是它为我的安装构建了go,darwin/amd64并且完全忽略了ENV中假设构建其他编译器的设置。 有没有人建议如何做到(如果可以做到的话)?


3
如何“测试”项目中的所有测试?
该go test命令*_test.go仅覆盖一个目录中的文件。 我想要go test整个项目,这意味着测试应覆盖*_test.godir中的所有文件以及该./dir下的每个千岁树dir ./。 这样做的命令是什么?
141 testing  go 

6
删除切片中的元素
func main() { a := []string{"Hello1", "Hello2", "Hello3"} fmt.Println(a) // [Hello1 Hello2 Hello3] a = append(a[:0], a[1:]...) fmt.Println(a) // [Hello2 Hello3] } 这个带有添加功能的删除技巧如何工作? 似乎它正在抓取第一个元素(空数组)之前的所有内容 然后将所有内容附加在第一个元素之后(位置零) ...(点点)是做什么的?
139 go 

7
在Go中解析日期字符串
我尝试"2014-09-12T11:45:26.371Z"在Go中解析日期字符串。 码 layout := "2014-09-12T11:45:26.371Z" str := "2014-11-12T11:45:26.371Z" t, err := time.Parse(layout , str) 我收到此错误: 解析时间“ 2014-11-12T11:47:39.489Z”:月超出范围 如何解析此日期字符串?
138 date  go 

5
进行构建:“找不到包”(即使设置了GOPATH)
即使GOPATH设置正确,我仍然无法“运行”或“运行”来找到自己的软件包。我究竟做错了什么? $ 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
138 build  go  package 

2
如何在结构中定义多个名称标签
我需要从mongo数据库中获取项目,所以我定义了一个这样的结构 type Page struct { PageId string `bson:"pageId"` Meta map[string]interface{} `bson:"meta"` } 现在,我还需要将其编码为JSON,但它会将字段编码为大写(我得到PageId而不是pageId),因此我还需要为JSON定义字段标签。我尝试过类似的方法,但是没有用: type Page struct { PageId string `bson:"pageId",json:"pageId"` Meta map[string]interface{} `bson:"meta",json:"pageId"` } 那么,如何在结构中定义多个名称标签呢?
137 json  struct  go 

3
什么是“。” (点或句点)在Go import语句中做什么?
在Go教程中,以及我看过的大多数Go代码中,都是这样导入软件包的: import ( "fmt" "os" "launchpad.net/lpad" ... ) 但是在http://bazaar.launchpad.net/~niemeyer/lpad/trunk/view/head:/session_test.go中,gocheck包中的导入(带有.): import ( "http" . "launchpad.net/gocheck" "launchpad.net/lpad" "os" ) .(期间)的意义是什么?
135 import  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.