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
in Load はのままnil
です。スライスへの参照を渡して、それに追加することができるはずだと思います。ただし、それを機能させる方法について明らかに何かが欠けています。