2016-09-14 63 views
0

要声明一个空片,我知道,你应该更喜欢围棋 - 初始化一个空切片

var t []string 

t := []string{} 

,因为它不分配内存不必要(https://github.com/golang/go/wiki/CodeReviewComments#declaring-empty-slices)。这是否仍然适用,如果我有

type example struct { 
    s []string 
} 
e := &example{} 

即会是更好地使用

e.s = []string{} 

var s []string 
e.s = s 
+1

你最后一个例子什么都不做,因为'example.s'已经是正确类型的零分片了。在这种情况下你不需要做任何事情。 – JimB

+0

抱歉 - 编辑我的问题。尚真? – ryebread

+1

即使代码无效,我也明白你的意思。 'e.s'和's'都是'nil',所以你所做的就是分配'e.s = nil',它什么都不做。 'e.s'已经是正确的类型,所以你不需要做任何事情。 – JimB

回答

2

example.s已声明,所以没有什么你需要做的。

e := &example{} 
e.s = append(e.s, "val") 
fmt.Println(e.s)