我在圍繞Go如何交互指針,切片和接口方面遇到了困難。這是我目前已經編寫了:通過引用傳遞自定義切片類型
type Loader interface {
Load(string, string)
}
type Foo struct {
a, b string
}
type FooList []Foo
func (l FooList) Load(a, b string) {
l = append(l, Foo{a, b})
// l contains 1 Foo here
}
func Load(list Loader) {
list.Load("1", "2")
// list is still nil here
}
鑑於此設置,然後我試着做到以下幾點:
var list FooList
Load(list)
fmt.Println(list)
然而,列表始終是nil
這裏。我的FooList.Load函數確實會將一個元素添加到l
切片,但這是儘可能多的。負載中的list
繼續爲nil
。我想我應該能夠通過我的切片的參考,並附加到它的東西。我明顯錯過了如何讓它工作。
我發誓,這是我開始,但得到類型錯誤。然後,我讀了一些地方,你不應該把指針指向片,因爲它們已經是引用,這就是我感到困惑的地方......無論如何,現在它都可以工作。謝謝! – Bill