使用for循环对 golang 中结构体数组取值进行修改时,需要注意的问题

2018-03-01 10:53:10来源:作者:人点击

分享

废话少说,直接上代码:


type a1 struct {
key1 string
key2 string
key3 string
}
testData := []a1{
a1{"1","2", "3"},
a1{"4","5", "6"},
}

上面的代码定义了一个结构体,声明了一个数组。


采用循环变量可以修改数组中结构体的取值:


for i := 0; i < len(testData); i++ {
testData[i].key3 = "999"
}
fmt.Printf("%v", testData)

输出:[{1 2 999} {4 5 999}]


采用 range 获取的下标值,然后用下标方式引用的数组项也可以直接修改:


for idx, _ := range testData {
testData[idx].key3 = "999"
}
fmt.Printf("%v", testData)

输出:[{1 2 999} {4 5 999}]


采用 range 获取数组项不能修改数组中结构体的值:


for _, item := range testData {
item.key3 = "999"
}
fmt.Printf("%v", testData)

输出:[{1 2 3} {4 5 6}]



微信扫一扫

第七城市微信公众平台