1.代码示例
package main
import (
"fmt"
"reflect"
)
// info . doc 标签
type Person struct {
ID int64 `info:"id" doc:"编号"`
Name string `info:"name" doc:"名字"`
Age int64 `info:"age" doc:"年龄"`
}
func FindTag(str interface{}) {
t := reflect.TypeOf(str).Elem()
for i := 0; i < t.NumField(); i++ {
fmt.Println("doc:", t.Field(i).Tag.Get("doc"))
}
}
func main() {
var user Person
FindTag(&user)
}
// 结果
doc: 编号
doc: 名字
doc: 年龄
2.结构体标签在json中的应用
package main
import (
"encoding/json"
"fmt"
)
// info . doc 标签
type Person struct {
ID int64 `json:"id"`
Name string `json:"name"`
Age int64 `json:"age"`
}
type NewPerson struct {
Person
}
func main() {
user := Person{1, "yw", 26}
// 将结构体转换成json
jsonStr, err := json.Marshal(user)
if err != nil {
fmt.Println("json marshall error:", err)
return
}
fmt.Printf("jsonStr=%s\n", jsonStr) //jsonStr={"id":1,"name":"yw","age":26}
// 将jsonStr转成结构体
newPerson := NewPerson{}
err = json.Unmarshal(jsonStr, &newPerson)
if err != nil {
fmt.Println("json unmarshall error:", err)
return
}
fmt.Printf("newPerson :%v\n", newPerson) //newPerson :{{1 yw 26}}
}
感觉兴趣的小伙伴可以加好友一起交流!!