lut*_*tix 3 go

我是相对较新的人,只是想弄清楚从go函数返回结构体集合的正确模式是什么。参见下面的代码,我一直在返回一个结构片,然后在尝试对其进行迭代时会出现问题,因为我必须使用接口类型。参见示例:

package main

import (
    "fmt"
)

type SomeStruct struct {
    Name       string
    URL        string
    StatusCode int
}

func main() {
    something := doSomething()
    fmt.Println(something)

    // iterate over things here but not possible because can't range on interface{}
    // would like to do something like
    //for z := range something {
    //    doStuff(z.Name)
    //}

}

func doSomething() interface{} {
    ServicesSlice := []interface{}{}
    ServicesSlice = append(ServicesSlice, SomeStruct{"somename1", "someurl1", 200})
    ServicesSlice = append(ServicesSlice, SomeStruct{"somename2", "someurl2", 500})
    return ServicesSlice
}

从我所阅读的内容来看,所有内容似乎都使用type switch或ValueOf与reflect来获取特定值。我认为我只是在这里遗漏了一些东西,因为我觉得来回传递数据应该很简单。