我有一个for循环遍历我的User
。但:
-当我用range
这是我的结果
for _, u := range users {
val := calcMem(u.sessionid)
// total += val
u.setMem(val)
}
Result:
[{user1 dp-tcp#64 2 0} {user2 dp-tcp#62 0} {user3 dp-tcp#83 4 0}]
-当我使用简单的for循环时:
for i := 0; i < len(users); i++ {
val := calcMem(users[i].sessionid)
// total += val
users[i].setMem(val)
}
Result:
[{user1 dp-tcp#64 2 5287.092000000001} {user2 dp-tcp#62 3589.383999999999} {user3 dp-tcp#83 4 3956.012}]
我在哪里做错了什么?
-setMem
功能:
func (u *user) setMem(value float64) {
u.memusage = value
}
如果你的方式
for _, u := range users {
}
您将获得切片值的副本。因此,如果您更改它,则更改此副本。
如果希望,可以按索引获取价值并进行修改:
for i := range users {
users[i] = ....
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句