Struct 在go中初始化多个结构

Struct 在go中初始化多个结构,struct,go,Struct,Go,我需要初始化多个结构变量 假设结构是 类型Foo struct{ 整数 b*Foo } 假设我想初始化其中的5个。有没有一种比多次在碎片下面更干净的方法 s0:=&Foo{} s1:=&Foo{} s2:=&Foo{} 差不多 变量a、b、c、d int 谢谢你的帮助!: 您需要指针吗?如果不是,那么答案就是你的问题。只需在var语句中将int替换为您的类型。是否需要指针?如果不是,那么答案就是你的问题。只要在var语句中用您的类型替换int即可。您可以使用一个循环和一个切片来分配5个foo

我需要初始化多个结构变量

假设结构是

类型Foo struct{ 整数 b*Foo } 假设我想初始化其中的5个。有没有一种比多次在碎片下面更干净的方法

s0:=&Foo{} s1:=&Foo{} s2:=&Foo{} 差不多

变量a、b、c、d int
谢谢你的帮助!:

您需要指针吗?如果不是,那么答案就是你的问题。只需在var语句中将int替换为您的类型。

是否需要指针?如果不是,那么答案就是你的问题。只要在var语句中用您的类型替换int即可。

您可以使用一个循环和一个切片来分配5个foo

 foos := make([]*Foo, 5)
 for i := range foos {
     foos[i] = &Foo{}
 }
另一种方法是使用阵列:

 foos := [5]Foo{}

并使用&foos[0],&foos[1]。。。作为您的指针。

您可以使用一个循环和一个切片来分配5个foo

 foos := make([]*Foo, 5)
 for i := range foos {
     foos[i] = &Foo{}
 }
另一种方法是使用阵列:

 foos := [5]Foo{}

并使用&foos[0],&foos[1]。。。作为您的指针。

如果需要,您可以将它们放在一条语句中:

s0, s1, s2 := new(Foo), new(Foo), new(Foo)
您也可以这样做:

var s0, s1, s2 Foo

然后依次使用&s0、&s1和&s2,而不是s0、s1和s2。

如果需要,可以将它们放在一个语句中:

s0, s1, s2 := new(Foo), new(Foo), new(Foo)
您也可以这样做:

var s0, s1, s2 Foo

然后随后使用&s0、&s1和&s2,而不是s0、s1和s2。

首选方法是将其包装在工厂函数中,您无论如何都应该这样做:

func NewFoos(count int) []foo {
    return make([]foo, count, count)
}

这是干净、简洁和柔软的:允许您根据需要轻松地初始化尽可能多或尽可能少的内容。

首选方法是将其包装在工厂函数中,您无论如何都应该这样做:

func NewFoos(count int) []foo {
    return make([]foo, count, count)
}

这是干净、简洁和柔软的:允许您轻松地初始化所需的任意数量。

对不起,Dustin,您是对的。你回答的措辞把我弄糊涂了,我已经删除了评论。对不起,达斯汀,你是对的。你回答的措辞把我弄糊涂了,我已经删除了评论。没有必要重复。只要返回make[]foo,计数就足够了。make已经将切片的元素构造为其零值。我在发布此内容后考虑了您的观点-没有机会测试它。当时我认为make可能只分配内存,而不是foo实例。我编辑过,相信你的话:不需要循环。只要返回make[]foo,计数就足够了。make已经将切片的元素构造为其零值。我在发布此内容后考虑了您的观点-没有机会测试它。当时我认为make可能只分配内存,而不是foo实例。我编辑过,相信你的话