Cách in "Foo" ở đây là gì? Trong ví dụ này, những gì in là "chuỗi".Lấy tên trường cấu trúc bằng cách sử dụng phản chiếu
http://play.golang.org/p/ZnK6PRwEPp
type A struct {
Foo string
}
func (a *A) PrintFoo(){
fmt.Println("Foo value is " + a.Foo)
}
func main() {
a := &A{Foo: "afoo"}
val := reflect.Indirect(reflect.ValueOf(a))
fmt.Println(val.Field(0).Type().Name())
}
"Không có cách nào để lấy tên trường cho một reflect.Value đại diện cho một parti giá trị trường cular "- Tại sao lại như thế? Không phải là loại và tên một phần của trường đó? – sat
@sat Ngay sau khi bạn có 'reflect.Value' của một trường cụ thể, nó không khác với bất kỳ biến nào khác. Chỉ cấu trúc có thông tin về các trường của nó. – nemo
@sat: trong ví dụ của bạn, 'val.Field (0)' không khác với 'reflect.Value' cho bất kỳ chuỗi nào khác. Nó không "nhớ" rằng nó là một phần của cấu trúc. –