通过range获取数组的值 -> 不能修改原数组中结构体的值:
通过range获取数组下标 -> 可以修改原数组中结构体的值:
package main
import "fmt"
func main() {
type User struct {
Name string
}
userArr := []User{
{Name: "ZhangSan"},
{Name: "LiSi"},
}
// 示例1:通过range获取数组的值 -> 不能修改原数组中结构体的值:
// 输出:userName1:{ZhangSan} userName1:{LiSi};原数组值并未改变!
for _, user := range userArr {
user.Name = "WangWu"
}
for _, userName1 := range userArr {
fmt.Println("userName1: ", userName1)
}
// 示例2:通过range获取数组下标 -> 可以修改原数组中结构体的值:
// 输出:userName2:{WangWu} userName2:{WangWu};原数组值被成功改变!
for i, _ := range userArr {
userArr[i].Name = "WangWu"
}
for _, userName2 := range userArr {
fmt.Println("userName2: ", userName2)
}
}
总结:想要通过遍历数组方式去改变其值时,需要通过数组下标去操作(示例2)!