Memory Go-初始化空切片
要声明一个空切片,我知道您应该更喜欢Memory Go-初始化空切片,memory,go,slice,allocation,is-empty,Memory,Go,Slice,Allocation,Is Empty,要声明一个空切片,我知道您应该更喜欢 var t []string 结束 因为它不分配不必要的内存()。如果我有,这仍然适用吗 type example struct { s []string } e := &example{} i、 e.使用它会更好吗 e.s = []string{} 或 example.s已声明,因此无需执行任何操作 e := &example{} e.s = append(e.s, "val") fmt.Println(e.s) examp
var t []string
结束
因为它不分配不必要的内存()。如果我有,这仍然适用吗
type example struct {
s []string
}
e := &example{}
i、 e.使用它会更好吗
e.s = []string{}
或
example.s
已声明,因此无需执行任何操作
e := &example{}
e.s = append(e.s, "val")
fmt.Println(e.s)
example.s
已声明,因此无需执行任何操作
e := &example{}
e.s = append(e.s, "val")
fmt.Println(e.s)
上一个示例没有任何作用,因为
example.s
已经是正确类型的nil片。在这种情况下你不需要做任何事情。对不起-编辑了我的问题。还是真的吗?我明白你的意思,尽管密码无效e.s
和s
都是nil
,因此您所要做的就是分配e.s=nil
,而这不起任何作用e.s
已经是正确的类型,因此您无需执行任何操作。太棒了,谢谢@jimb您的上一个示例没有执行任何操作,因为example.s
已经是正确类型的零片段。在这种情况下你不需要做任何事情。对不起-编辑了我的问题。还是真的吗?我明白你的意思,尽管密码无效e.s
和s
都是nil
,因此您所要做的就是分配e.s=nil
,而这不起任何作用e.s
已经是正确的类型,因此您无需执行任何操作。太棒了,谢谢@JimB
e := &example{}
e.s = append(e.s, "val")
fmt.Println(e.s)