doudao3170 2017-01-06 02:43
浏览 26
已采纳

我可以在仅[]结构的结构上使用范围吗?

I have some structs that are defined as follows:

type Thing struct {
        Name string
}

type ThingList []Thing

I am trying to range over ThingList as follows:

thingList := GetThingListFilledWithValues()
for _, v := range thingList {
        v.DoStuffToThing()
}

It throws an error saying that you can't range over thingList because it's not a slice, but a type ThingList.

How can I range over type ThingList knowing that at it's root, it's a slice?

EDIT: So apparently, I wasn't fully correct in my post here. Instead of type ThingList being incorrect, it was a type *ThingList that I was trying to range over, which it failed on. So you can range over a listStruct with type []Struct, just not a *listStruct.

Thanks for helping me find the answer, everybody.

  • 写回答

1条回答 默认 最新

  • dtip91401 2017-01-06 03:02
    关注

    You need to use an instance of your new type as the return from your function. You must be returning the wrong thing from GetThingListFilledWithValues()

    For example:

    func GetThingListFilledWithValues() ThingList {
        return ThingList{
            Thing{Name: "One"},
            Thing{Name: "Two"},
        }
    }
    

    And use it like so

    thingList := GetThingListFilledWithValues()
    for _, v := range thingList {
        v.DoStuffToThing()
    }
    

    Here's the full example in the go playground https://play.golang.org/p/6lGdbBsQgJ

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 2024-五一综合模拟赛
  • ¥15 如何将下列的“无限压缩存储器”设计出来
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口