我有一些结构定义如下:
type Thing struct {
Name string
}
type ThingList []Thing
我的目标是ThingList
范围如下:
thingList := GetThingListFilledWithValues()
for _, v := range thingList {
v.DoStuffToThing()
}
它会抛出一个错误,指出您的范围不能超过thingList
,因为它不是切片,而是type ThingList
。
我如何知道在{1}}知道根据它的根,它是一片?
修改:
显然,我在这里的帖子中并没有完全正确。而type ThingList
不是type ThingList
,而是type *ThingList
,我试图将其范围覆盖,但失败了。因此,可以范围超过类型为[]Struct
的listStruct,而不是*listStruct
。
感谢您帮助我找到答案,每个人。
答案 0 :(得分:7)
您需要使用新类型的实例作为函数的返回值。你必须从GetThingListFilledWithValues()
例如:
func GetThingListFilledWithValues() ThingList {
return ThingList{
Thing{Name: "One"},
Thing{Name: "Two"},
}
}
并像这样使用
thingList := GetThingListFilledWithValues()
for _, v := range thingList {
v.DoStuffToThing()
}
以下是go playground https://play.golang.org/p/6lGdbBsQgJ
中的完整示例