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来获取特定值。我认为我只是在这里遗漏了一些东西,因为我觉得来回传递数据应该很简单。