我需要初始化多个struct变量
让我们说结构是
type Foo struct {
a int
b *Foo
}
让我们说我想初始化其中的5个。有多干净的方式比下面的片段多次?
s0 := &Foo{}
s1 := &Foo{}
s2 := &Foo{}
类似
var a, b, c, d int
感谢您的帮助! :)
答案 0 :(得分:6)
如果您愿意,可以将它们放在一个陈述中:
s0, s1, s2 := new(Foo), new(Foo), new(Foo)
你也可以这样做:
var s0, s1, s2 Foo
然后使用&s0
,&s1
和&s2
代替s0
,s1
和s2
。
答案 1 :(得分:1)
你需要指针吗?如果没有,你的答案就完全没问题了。只需在var语句中将int
替换为您的类型。
答案 2 :(得分:1)
您可以使用循环和切片分配5个foos。
foos := make([]*Foo, 5)
for i := range foos {
foos[i] = &Foo{}
}
另一种方法是使用数组:
foos := [5]Foo{}
并使用& foos [0],& foos [1],......作为指针。
答案 3 :(得分:0)
首选方法是将其包装在工厂函数中(无论如何应该这样做):
func NewFoos(count int) []foo {
return make([]foo, count, count)
}
这是干净,简洁和软:允许您根据需要轻松初始化。