【发布时间】:2017-12-18 19:48:21
【问题描述】:
我有一个struct []student,我想用函数修改它的内容。
type student struct {
name string
age int
}
students := []student{
{"Doraemon", 30},
{"King Kong", 25},
}
因此,我决定将其作为指针传递。我可以知道如何将切片作为对函数的引用传递吗?
func addAge (s *[]student) error { //this code has error
//everyone add 2 years old
for i, e := range *s {
s[i].age = s[i].age + 2
}
//make the first student much older
s[0].age = s[0].age + 5
return nil
}
我一直在玩Go Playground,但它给了很多抱怨,比如
cannot range over s (type *[]student)
invalid operation: s[i] (type *[]student does not support indexing)
invalid indirect of s
...
如何精确地将slice of struct 的引用传递给函数?如何range结构切片?以及如何更改结构的值(修改 THE slice 中的相同结构)?
我在玩s *[]student、range *s、s []student、s *[]*student 时不断出错......很难让它正确......
抱歉我的新手问题,还在学习 GO...努力中
【问题讨论】:
-
请向我们展示您的exact错误的exact code。当您有不同的、相互冲突的错误消息时,很难告诉您如何改进您的代码。
-
另外,您不需要传递指向切片的指针——切片已经通过引用传递。
-
您必须阅读,blog.golang.org/slices。切片是安静特别的东西。
标签: go