-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathstruct_test.go
94 lines (86 loc) · 1.86 KB
/
struct_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package examples_test
import (
"fmt"
"github.com/nofeaturesonlybugs/set"
)
func ExampleStruct_Fill() {
type T struct {
Bool bool
Int int
Uint uint
String string
}
values := map[string]interface{}{
"Bool": true,
"Int": -42,
"Uint": 42,
"String": "Hello, World!",
}
fn := func(key string) interface{} {
if value, ok := values[key]; ok {
return value
}
return nil
}
var t T
if err := set.V(&t).Fill(set.GetterFunc(fn)); err != nil {
fmt.Println(err)
} else {
fmt.Println(t.Bool, t.Int, t.Uint, t.String)
}
// Output: true -42 42 Hello, World!
}
func ExampleStruct_Fill_byTag() {
type T struct {
Bool bool `someTag:"myBool"`
Int int `someTag:"myInt"`
Uint uint `someTag:"myUint"`
String string `someTag:"myString"`
}
values := map[string]interface{}{
"myBool": true,
"myInt": -42,
"myUint": 42,
"myString": "Hello, World!",
}
fn := func(key string) interface{} {
if value, ok := values[key]; ok {
return value
}
return nil
}
var t T
if err := set.V(&t).FillByTag("someTag", set.GetterFunc(fn)); err != nil {
fmt.Println(err)
} else {
fmt.Println(t.Bool, t.Int, t.Uint, t.String)
}
// Output: true -42 42 Hello, World!
}
func ExampleStruct_Fill_byTagWithPunctuation() {
type T struct {
Bool bool `some.tag:"my-bool"`
Int int `some.tag:"my-int"`
Uint uint `some.tag:"my-uint"`
String string `some.tag:"my-string"`
}
values := map[string]interface{}{
"my-bool": true,
"my-int": -42,
"my-uint": 42,
"my-string": "Hello, World!",
}
fn := func(key string) interface{} {
if value, ok := values[key]; ok {
return value
}
return nil
}
var t T
if err := set.V(&t).FillByTag("some.tag", set.GetterFunc(fn)); err != nil {
fmt.Println(err)
} else {
fmt.Println(t.Bool, t.Int, t.Uint, t.String)
}
// Output: true -42 42 Hello, World!
}