package main
//
// 主要用于 struct 转 map
// 还可以判断结构体是否有空属性等功能
//
import (
"fmt"
"github.com/fatih/structs"
)
// struct --> map
type Stu struct {
Name string
Age int
}
func main() {
// 创建一个 Age 属性为空的 struct 实例
u1 := Stu{
Name: "Tim",
}
var u2 Stu
// 判断是否为结构体
isStruct := structs.IsStruct(u1)
fmt.Println(isStruct)
// 判断 struct 是否为空 --> false
isZero := structs.IsZero(u2)
fmt.Println(isZero)
// 是否有空属性 --> true
hasZero := structs.HasZero(u1)
fmt.Println(hasZero)
// 获取 structName --> Stu
structName := structs.Name(u1)
fmt.Println(structName)
// 获取 struct 所有属性名 --> [Name Age]
names := structs.Names(u1)
fmt.Println(names)
// 获得 属性对应的值 --> [Tim 0]
values := structs.Values(u1)
fmt.Println(values)
// 转成 map
m := structs.Map(u1)
for _, v := range m {
fmt.Printf("%T , %[1]v\n", v)
}
}