为什么不能跨越 *[]Struct?

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 数组吗?


芜湖不芜
浏览 146回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python