Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
For loop 结构值不为';t随循环范围的变化而变化_For Loop_Go_Struct - Fatal编程技术网

For loop 结构值不为';t随循环范围的变化而变化

For loop 结构值不为';t随循环范围的变化而变化,for-loop,go,struct,For Loop,Go,Struct,我有一个for循环,它在User的切片上迭代。但是: -当我使用withrange时,这是我的结果 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

我有一个for循环,它在
User
的切片上迭代。但是:

-当我使用with
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}]

如果你有办法的话

for _, u := range users {
}
您将获得切片值的副本。所以,如果你改变它,你就改变这个副本

如果您愿意,可以按索引获取值并进行修改:

for i := range users {
    users[i] = ....
}

与所有赋值一样,
范围
中的值变量是切片中值的副本。
for i := range users {
    users[i] = ....
}