假设我想更改数组中所有对象的值。
我喜欢范围语法不仅仅是命名 for 循环。
所以我试过:
type Account struct {
balance int
}
type AccountList []Account
var accounts AccountList
...
....
// to init balances
for _,a := range( accounts ) {
a.balance = 100
}
这不起作用,因为 a 是 AccountList 条目的副本,因此我们只更新副本。
这确实有效,因为我需要它:
for a := range( accounts ) {
accounts[a].balance = 100
}
但是该代码在 for 循环内有一个额外的查找。
有没有办法做一个迭代器来获取对 AccountList 中结构的引用?
最佳答案
只需让 AccountList 为 []*Account。然后您将获得指向范围内每个帐户的指针。
关于reference - Go:你可以在 slice 中使用范围但获得引用吗? (迭代),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4948741/