forked from it-sos/golibs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
value_tag_flip.go
35 lines (31 loc) · 944 Bytes
/
value_tag_flip.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
/*
Copyright (c) [2021] IT.SOS
golibs is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
*/
package reflects
import "reflect"
// tagType 的值
const (
YAML = "yaml"
JSON = "json"
)
// TagToValueFlip ...
func TagToValueFlip(t reflect.Value, tagType string) {
for i := 0; i < t.NumField(); i++ {
f := t.Type().Field(i)
if f.Type.Name() != "string" {
continue
}
tag := f.Tag.Get(tagType)
s := t.FieldByName(f.Name)
if !s.CanSet() {
panic(f.Name + " => not set value. " + tag)
}
s.SetString(tag)
}
}