Tag:

Golang – 正确的方法来初始化空片

要声明一个空白的分片,并且大小不固定,最好这样做: mySlice1 := make([]int, 0) 要么 : mySlice2 := []int{} 只是想知道哪一个是正确的方法。 干杯

Go中的缩进:制表符或空格?

是否有一个标准的Google Go编码约定文件,用于设置在Go源代码中是否使用制表符或空格来缩进? 如果不是,那么(统计上)更受欢迎的select是什么? 什么是官方build议? (如果有的话) 什么是更受欢迎的select?

在Go中,断开语句是否从开关/select中断开?

我知道switch / select语句会在每个case后自动中断。 我想知道,在下面的代码: for { switch sometest() { case 0: dosomething() case 1: break default: dosomethingelse() } } break语句是否退出for循环或者只是switch块?

可以打开一个频道吗?

如果我从不检查它的状态,是否可以永远打开Go频道(从不closures频道)? 会导致内存泄漏吗? 下面的代码可以吗? func (requestCh chan<- Request) GetResponse(data RequestData) Response { reply := make(chan Response) requestCh <- Request{data: data, replyCh: reply} return <-reply }

使用标准库可以在Go中嵌套模板吗? (Google App Engine)

我如何获得像Jin​​ja嵌套模板在Python运行时。 TBC我的意思是我如何从一个基本模板inheritance一堆模板,只是在基本模板块,如Jinja / Django模板。 是否有可能使用标准库中的html/template 。 如果这不可能,我有什么select。 小胡子似乎是一个select,但我会错过这些html/template的上下文敏感转义等微妙的function? 还有什么其他的select? (环境:Google App Engin,Go运行时v1,Dev – Mac OSx狮子) 谢谢阅读。

包含切片的方法

在Go中是否有类似于slice.contains(object)方法的东西,而不必通过切片中的每个元素进行search?

如何找出切片中的元素位置?

如何确定切片中存在的元素的位置? 我需要像下面这样的东西: type intSlice []int func (slice intSlice) pos(value int) int { for p, v := range slice { if (v == value) { return p } } return -1 }

你如何在Go中清除一个片段?

在Go中清除切片的适当方法是什么? 以下是我在论坛中find的内容: // test.go package main import ( "fmt" ) func main() { letters := []string{"a", "b", "c", "d"} fmt.Println(cap(letters)) fmt.Println(len(letters)) // clear the slice letters = letters[:0] fmt.Println(cap(letters)) fmt.Println(len(letters)) } 它是否正确? 编辑:让我澄清,缓冲区被清除,所以可以重复使用。 字节包中的一个示例是Buffer.Truncate函数。 请注意,Reset仅调用截断(0)。 所以看起来在这种情况下,第70行会计算:b.buf = b.buf [0:0] http://golang.org/src/pkg/bytes/buffer.go // Truncate discards all but the first n unread bytes from the buffer. 60 // […]

Golang如何导入没有gopath的本地软件包?

我已经使用GOPATH但目前这个问题我没有帮助。 我希望能够创build特定于项目的包: myproject/ ├── binary1.go ├── binary2.go ├── package1.go └── package2.go 我尝试了多种方式,但是如何让package1.go工作在binary1.go或者binary2.go等等? 例如; 我想能够import "package1" ,然后能够运行go build binary1.go ,一切工作正常,没有错误被抛出的包不能在GOROOT或GOPATHfind。 我需要这种function的原因是大型项目。 我不想引用多个其他软件包或将它们保存在一个大文件中。

如何在Go语言中导入和使用不同的同名软件包?

例如,我想在一个源文件中使用text / template和html / template。 但是下面的代码会抛出错误。 import ( "fmt" "net/http" "text/template" // template redeclared as imported package name "html/template" // template redeclared as imported package name ) func handler_html(w http.ResponseWriter, r *http.Request) { t_html, err := html.template.New("foo").Parse(`{{define "T"}}Hello, {{.}}!{{end}}`) t_text, err := text.template.New("foo").Parse(`{{define "T"}}Hello, {{.}}!{{end}}`) }