我对指针、切片和接口在 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。我想我应该能够将引用传递给我的切片并附加到它。不过,我显然缺少有关如何使其工作的内容。
慕哥9229398
隔江千里
相关分类