在本文中,我們將探討在嘗試擷取包含指向的指標的結構體的欄位值時遇到的問題另一個結構體。
考慮這個例子:
type Family struct { first string last string } type Person struct { name string family *Family }
想像一下我們有一個帶有指向 Family 的指標的 Person。我們希望使用反射來存取 Family 的最後一個欄位。以下程式碼會失敗並出現錯誤:
func Check(data interface{}) { var v = reflect.ValueOf(data) if v.Kind() == reflect.Struct { fmt.Println("was a struct") v = v.FieldByName("family").FieldByName("last") fmt.Println(v) } }
func Check(data interface{}) { var v = reflect.ValueOf(data) if v.Kind() == reflect.Struct { fmt.Println("was a struct") familyPtr := v.FieldByName("family") v = reflect.Indirect(familyPtr).FieldByName("last") fmt.Println(v) } }
以上是如何在 Go 中使用反射檢索指標的欄位值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!