我很难理解指针、切片和接口在 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
。我想我应该能够将引用传递给我的切片并附加一些东西。我显然错过了如何让它工作的东西。