http://play.golang.org/p/jdWZ9boyrh
我收到此错误
prog.go:29: invalid receiver type *[]Sentence ([]Sentence is an unnamed type)
prog.go:30: cannot range over S (type *[]Sentence)
[process exited with non-zero status]
当我的函数尝试接收结构数组时。
未命名的类型是什么意思?为什么不能命名?我可以在函数之外命名它,也可以将它们作为参数传递给它们。
这没用。所以我只是将 []Sentence 作为参数传递并解决了我需要的问题。但是当将它们作为参数传递时,我必须返回一个新副本。
我仍然认为,如果我可以让函数接收结构数组而不必返回任何内容,那就太好了。
如下所示:
func (S *[]Sentence)MarkC() {
for _, elem := range S {
elem.mark = "C"
}
}
var arrayC []Sentence
for i:=0; i<5; i++ {
var new_st Sentence
new_st.index = i
arrayC = append(arrayC, new_st)
}
//MarkC(arrayC)
//fmt.Println(arrayC)
//Expecting [{0 C} {1 C} {2 C} {3 C} {4 C}]
//but not working
它也不适用于 []Sentence。
无论如何,我可以让一个函数接收 Struct 数组吗?