英文:
Slices: Trouble appending to a slice in a struct
问题
所以,我正在尝试适应Go!我遇到了一个问题,我试图创建一个包含切片的新数据类型"RandomType"。
package main
type RandomType struct {
RandomSlice []int
}
func main() {
r := new(RandomType)
r.RandomSlice = make([]int, 0)
append(r.RandomSlice, 5)
}
这段代码会产生一个错误:
append(r.RandomSlice, 5)未被使用
然而,如果我尝试使用以下代码:
type RandomType struct {
RandomInt int
}
func main() {
r := new(RandomType)
r.RandomInt = 5
}
这段代码可以正常工作。
不确定我做错了什么。
英文:
So, I'm trying to get used to Go! and I've come up to a problem where I try making a new data type "RandomType" which contains a slice.
package main
type RandomType struct {
RandomSlice []int
}
func main() {
r := new(RandomType)
r.RandomSlice = make([]int, 0)
append(r.RandomSlice, 5)
}
This bit of code yields an error:
append(r.RandomSlice, 5) not used
However for instance if I try with
type RandomType struct {
RandomInt int
}
func main() {
r := new(RandomType)
r.RandomInt = 5
}
this works fine.
Not sure what I'm doing wrong.
答案1
得分: 10
append
不会改变你提供的切片,而是构建一个新的切片。
你必须使用返回的切片:
r.RandomSlice = append(r.RandomSlice, 5)
有关append
的更多详细信息,请参阅Effective Go和Go博客。
英文:
append
doesn't change the slice you provide but builds a new one.
You must use the returned slice :
r.RandomSlice = append(r.RandomSlice, 5)
More details about append in Effective Go and in the Go blog.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论