におけるインタフェースの配列のダンプ私はこのようなインタフェースの配列を持っているgolang
名を
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 Testオブジェクトは単なるサンプル用です。どのインタフェースがダンプ機能に渡されるのかわかりません。 – ahmdrz