ビルドしているライブラリにリフレクションを使用していますが、理解できない部分がありますreflect.New
です。reflect.Newは、初期化された構造体の代わりに<nil>を返します。
type A struct {
A int
B string
}
func main() {
real := new(A)
reflected := reflect.New(reflect.TypeOf(real)).Elem().Interface()
fmt.Println(real)
fmt.Println(reflected)
}
は与える:
$ go run *go
&{0 }
<nil>
はreflect.New
も&{0 }
を返すことになっていませんか? (Runnable Version)
は、最終的に、私は、反射構造体のフィールドを反復することができるように希望(reflected.NumField()
がreflected.NumField undefined (type interface {} is interface with no methods)
を与える)などSetInt
、SetString
とを使用します。あなたはポインタを返すあなたのreal
変数を作成したとき
おかげで、