type Student struct {
Name string
Age int
}
func main() {
data := make([]*Student, 0)
src := []Student{
Student{Name: "allen", Age: 30},
Student{Name: "tom", Age: 33},
}
for _, m := range src {
data = append(data, &m) // notice point!!!
}
for _, s := range data {
fmt.Println(*s)
}
}
为什么这段代码在 Go 中可以运行?输出与预期相反,如下所示。
{tom 33}
{tom 33}
代替
{allen 30}
{tom 33}
我发现的一个解释是m是一个固定指针,因此每次append(data,&m)只附加 的地址m,该地址在迭代期间保持不变。
然而,根据这个解释,m似乎是 of *Student,所以&m是 of **Student,但是如何将一个 value( &m)**Student追加到一个数组中呢[]*Student?
温温酱
慕田峪7331174
慕的地10843
相关分类