我已经阅读了一些有关“为什么要指针,为什么不要指针”的堆栈溢出问题,但是我不太了解。
因此,想根据下面的示例来理解
我有一个用户列表,我很难理解哪种方法更好,更快,以便将用户的数组结构嵌套在另一个结构中。
例如-
type loc struct {
Type string
Point []float64
}
type User struct {
ID string
Name string
Location loc
... // 30 more fields
}
案例A-对嵌套数组结构使用指针
type Games struct {
ID string
Owner []*User
Player []*User
}
// and storing it as
G:= Games{
ID: "1",
Owner: []*User{
&User {
ID: "2",
Name: "User A",
},
},
}
案例B-我应该使用上方方法还是下方方法
type Games struct {
ID string
Owner []User
Player []User
}
// storing it as
G := Games {
ID: "1",
Owner: []User{
{
ID: "2",
Name: "User A",
},
},
}
考虑到这种情况,在为上面的Owner
创建值后,我不必更改Player
或Games
的数据,并且 Player
有时可以保持Nil < / strong>,我应该只使用User
还是最好使用*User
基于上述2个案例,我有以下困惑
答案 0 :(得分:0)
使用选项B
但是如果要避免在迭代期间分配或更改内容,则需要这样做:
for i:=range G.Games{
G.Games[i]....
}
这样,每次迭代都会创建一个副本
for _,game:=range G.Games{
game....
}
这看起来像是过早的优化。 以最简单/可读的方式编写,如果不够快,请查看this来查找瓶颈