| // +build ignore |
| |
| package main |
| |
| import "reflect" |
| |
| type A struct { |
| f *int |
| g interface{} |
| h bool |
| } |
| |
| var dyn string |
| |
| func reflectTypeFieldByName() { |
| f, _ := reflect.TypeOf(A{}).FieldByName("f") |
| print(f.Type) // @pointsto *int |
| |
| g, _ := reflect.TypeOf(A{}).FieldByName("g") |
| print(g.Type) // @pointsto interface{} |
| print(reflect.Zero(g.Type)) // @pointsto <alloc in reflect.Zero> |
| print(reflect.Zero(g.Type)) // @types interface{} |
| |
| print(reflect.Zero(g.Type).Interface()) // @pointsto |
| print(reflect.Zero(g.Type).Interface()) // @types |
| |
| h, _ := reflect.TypeOf(A{}).FieldByName("h") |
| print(h.Type) // @pointsto bool |
| |
| missing, _ := reflect.TypeOf(A{}).FieldByName("missing") |
| print(missing.Type) // @pointsto |
| |
| dyn, _ := reflect.TypeOf(A{}).FieldByName(dyn) |
| print(dyn.Type) // @pointsto *int | bool | interface{} |
| } |
| |
| func reflectTypeField() { |
| fld := reflect.TypeOf(A{}).Field(0) |
| print(fld.Type) // @pointsto *int | bool | interface{} |
| } |
| |
| func main() { |
| reflectTypeFieldByName() |
| reflectTypeField() |
| } |