GoPLS Viewer

Home|gopls/go/pointer/testdata/structreflect.go
1// +build ignore
2
3package main
4
5import "reflect"
6
7type A struct {
8    f *int
9    g interface{}
10    h bool
11}
12
13var dyn string
14
15func reflectTypeFieldByName() {
16    f_ := reflect.TypeOf(A{}).FieldByName("f")
17    print(f.Type// @pointsto *int
18
19    g_ := reflect.TypeOf(A{}).FieldByName("g")
20    print(g.Type)               // @pointsto interface{}
21    print(reflect.Zero(g.Type)) // @pointsto <alloc in reflect.Zero>
22    print(reflect.Zero(g.Type)) // @types interface{}
23
24    print(reflect.Zero(g.Type).Interface()) // @pointsto
25    print(reflect.Zero(g.Type).Interface()) // @types
26
27    h_ := reflect.TypeOf(A{}).FieldByName("h")
28    print(h.Type// @pointsto bool
29
30    missing_ := reflect.TypeOf(A{}).FieldByName("missing")
31    print(missing.Type// @pointsto
32
33    dyn_ := reflect.TypeOf(A{}).FieldByName(dyn)
34    print(dyn.Type// @pointsto *int | bool | interface{}
35}
36
37func reflectTypeField() {
38    fld := reflect.TypeOf(A{}).Field(0)
39    print(fld.Type// @pointsto *int | bool | interface{}
40}
41
42func main() {
43    reflectTypeFieldByName()
44    reflectTypeField()
45}
46
MembersX
reflectTypeFieldByName
reflectTypeFieldByName._
reflectTypeFieldByName.dyn
A.h
reflectTypeField
reflectTypeFieldByName.f
reflectTypeFieldByName.missing
reflectTypeField.fld
A
A.f
A.g
dyn
reflectTypeFieldByName.g
reflectTypeFieldByName.h
Members
X