你有一个golang切片结构,你想在那里改变一个条目.
type Type struct {
value int
}
func main() {
s := []Type{{0}, {0}}
// Prints [{0} {0}]
fmt.Println(s)
firstEntry := s[0]
firstEntry.value = 5
// Also prints [{0} {0}]
fmt.Println(s)
}
Run Code Online (Sandbox Code Playgroud)
https://play.golang.org/p/32tpcc3-OD
使用括号运算符并修改其返回值不会更改切片本身.
执行此切片条目修改的推荐方法是什么?
Wea*_*ter 11
尝试
s[0].value = 5
Run Code Online (Sandbox Code Playgroud)
这将进入切片的后备存储.也
p := &s[1]
p.value = 6
Run Code Online (Sandbox Code Playgroud)
您还可以直接获取切片元素的地址并取消引用它:
func main() {
s := []Type{{0}, {0}}
// Prints [{0} {0}]
fmt.Println(s)
// De-reference the address of the slice element
(&s[0]).value = 5
// Prints [{5} {0}]
fmt.Println(s)
}
Run Code Online (Sandbox Code Playgroud)