我可以覆盖仅仅是[]结构的结构吗?

时间:2017-01-06 02:43:42

标签: go

我有一些结构定义如下:

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

感谢您帮助我找到答案,每个人。

1 个答案:

答案 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

中的完整示例