github.com/qiuhoude/go-web@v0.0.0-20220223060959-ab545e78f20d/prepare/11_reflect/rtype/type.go (about)

     1  package rtype
     2  
     3  import "fmt"
     4  
     5  type User struct {
     6  	Name string      `json:"name" bson:"b_name"`
     7  	Age  *int        `json:"age"`
     8  	Love interface{} `json:"love"`
     9  	lv   int         `json:"lv"`
    10  }
    11  
    12  func (u User) GetLv() int {
    13  	return u.lv
    14  }
    15  
    16  func (u *User) SetLv(lv int) {
    17  	u.lv = lv
    18  }
    19  
    20  func (u User) Print(prfix string) {
    21  	if u.Age == nil {
    22  		// 对nil取 * 是会panic的
    23  		fmt.Printf("%s:Name is %s,Age is ? ageAddr=%v Love=%v lv=%d \n", prfix, u.Name, u.Age, u.Love, u.lv)
    24  	} else {
    25  		fmt.Printf("%s:Name is %s,Age is %v ageAddr=%v Love=%v lv=%d \n", prfix, u.Name, *u.Age, u.Age, u.Love, u.lv)
    26  	}
    27  }
    28  
    29  type User1 struct {
    30  	B   byte
    31  	I32 int32
    32  	I64 int64
    33  }