数组我有一个接口,一个这样的数组:转储的接口在golang
type Test struct {
Name string
}
func main() {
result := []Test{
Test{Name: "ahmad"},
Test{Name: "reza"},
}
dump(result)
}
我如何可以转储这个阵列中,并使这样的字符串:
名称
ahmad
reza
我想要的东西像this但与数组。
更新
我不想转储测试界面...
我想每一个接口倾倒。
package main
import (
"fmt"
"reflect"
)
type Test struct {
Name string
}
func main() {
result := []Test{
Test{Name: "ahmad"},
Test{Name: "reza"},
}
dump(result)
}
func dump(datasets interface{}) {
items := reflect.ValueOf(datasets)
if items.Kind() == reflect.Slice {
for i := 0; i < items.Len(); i++ {
item := items.Index(i)
if item.Kind() == reflect.Struct {
s := reflect.ValueOf(item)
t := reflect.TypeOf(item)
for j := 0; j < s.NumField(); j++ {
fmt.Println(t.Field(j).Name)
}
}
}
}
}
就像这样。但结果是:
typ
ptr
flag
typ
ptr
flag
我怎样才能改变输出到:
Name
Name
你有一个'Test'对象的数组,你真的需要把这些项目当作一些接口吗?在你的例子中,它当然不是必要的,但它只是一个例子,所以一些澄清会有帮助。如果这确实代表了你的代码,你应该100%做'result [i] .Name'而不是触及反射或接口。 – evanmcdonnal
@evanmcdonnal测试对象仅用于示例。我不知道将传递给dump函数的接口是什么。 – ahmdrz