Source file
doc/progs/interface2.go
1
2
3
4
5
6
7 package main
8
9 import (
10 "fmt"
11 "reflect"
12 )
13
14 func main() {
15 var x float64 = 3.4
16 fmt.Println("type:", reflect.TypeOf(x))
17
18
19 }
20
21
22
23 func f1() {
24
25 var x float64 = 3.4
26 v := reflect.ValueOf(x)
27 fmt.Println("type:", v.Type())
28 fmt.Println("kind is float64:", v.Kind() == reflect.Float64)
29 fmt.Println("value:", v.Float())
30
31 }
32
33 func f2() {
34
35 var x uint8 = 'x'
36 v := reflect.ValueOf(x)
37 fmt.Println("type:", v.Type())
38 fmt.Println("kind is uint8: ", v.Kind() == reflect.Uint8)
39 x = uint8(v.Uint())
40
41 }
42
43 func f3() {
44
45 type MyInt int
46 var x MyInt = 7
47 v := reflect.ValueOf(x)
48
49
50 y := v.Interface().(float64)
51 fmt.Println(y)
52
53
54 fmt.Println(v.Interface())
55
56
57 fmt.Printf("value is %7.1e\n", v.Interface())
58
59 }
60
61 func f4() {
62
63 var x float64 = 3.4
64 v := reflect.ValueOf(x)
65 v.SetFloat(7.1)
66
67 }
68
69 func f5() {
70
71 var x float64 = 3.4
72 v := reflect.ValueOf(x)
73 fmt.Println("settability of v:", v.CanSet())
74
75 }
76
77 func f6() {
78
79 var x float64 = 3.4
80 v := reflect.ValueOf(x)
81
82
83 v.SetFloat(7.1)
84
85 }
86
87 func f7() {
88
89 var x float64 = 3.4
90 p := reflect.ValueOf(&x)
91 fmt.Println("type of p:", p.Type())
92 fmt.Println("settability of p:", p.CanSet())
93
94
95 v := p.Elem()
96 fmt.Println("settability of v:", v.CanSet())
97
98
99 v.SetFloat(7.1)
100 fmt.Println(v.Interface())
101 fmt.Println(x)
102
103 }
104
105 func f8() {
106
107 type T struct {
108 A int
109 B string
110 }
111 t := T{23, "skidoo"}
112 s := reflect.ValueOf(&t).Elem()
113 typeOfT := s.Type()
114 for i := 0; i < s.NumField(); i++ {
115 f := s.Field(i)
116 fmt.Printf("%d: %s %s = %v\n", i,
117 typeOfT.Field(i).Name, f.Type(), f.Interface())
118 }
119
120
121 s.Field(0).SetInt(77)
122 s.Field(1).SetString("Sunset Strip")
123 fmt.Println("t is now", t)
124
125 }
126
127 func f9() {
128
129 var x float64 = 3.4
130 fmt.Println("value:", reflect.ValueOf(x))
131
132 }
133
View as plain text