package main
import (
"fmt"
"reflect"
)
//定义一个结构体
type Tom struct {
}
func main() {
var a *int
isNilA := reflect.ValueOf(a).IsNil()
fmt.Println("判断指针是否初始化:",isNilA)
var b *int = new(int)
isNilB := reflect.ValueOf(b).IsNil()
fmt.Println("判断指针是否初始化:",isNilB)
var c int
zero := reflect.ValueOf(c).IsZero()
fmt.Println("c的值是否为零:",zero)
c = 1
zeros := reflect.ValueOf(c).IsZero()
fmt.Println("c的值是否为零:",zeros)
var d int
//判断是否有效
valid := reflect.ValueOf(d).IsValid()
fmt.Println("d是否有效:",valid)
d = 2
fmt.Println("d是否有效:",reflect.ValueOf(d).IsValid())
tom := Tom{}
fmt.Println("结构体内部属性名是否有效",reflect.ValueOf(tom).FieldByName("name").IsValid())
fmt.Println("结构体方法是否有效:",reflect.ValueOf(tom).MethodByName("name").IsValid())
m := make(map[interface{}]interface{})
fmt.Println(reflect.ValueOf(m).MapIndex(reflect.ValueOf(3)).IsValid())
}