golang中struct成员变量的标签(Tag)说明和获取方式

处理json格式字符串的时候,经常会看到声明struct结构的时候,属性的右侧还有小米点括起来的内容。形如

type Account struct {
    // Id的值会进行二次JSON编码    
    Id              int64  `json:"id"`
    Account         string `json:"account,omitempty" orm:"size(48)"`     // 账号
    PassWord        string `json:"-" orm:"size(32)"`                     // 密码
    //设置字段的长度
    Phone           string `json:"phone" orm:"size(16)"`                 // 手机号

    // 如果 LastLoginTime为空,则不输出到JSON串中
    LastLoginTime int64 `json:"lastlogintime,omitempty"`

    // 设置一对一关系同时含有json输出格式
    Score       *Score       `json:"score,omitempty" orm:"rel(one)"`           // 账号财富

    // 设置一对多的反向关系
    PaymentLog []*PaymentLog `json:"-" orm:"reverse(many)"`

     // 设置一对一反向关系(可选)
    User   *Userinfos `orm:"reverse(one)"`

    //设置多对多关系
    Tags  []*Tag     `orm:"rel(m2m)"`

    //设置反向多对多关系
    Posts []*Post `orm:"reverse(many)"`
}

字段的tag是"-",那么这个字段不会输出到JSON
tag中如果带有"omitempty"选项,那么如果该字段值为空,就不会输出到JSON串中
如果字段类型是bool, string, int, int64等,而tag中带有",string"选项,那么这个字段在输出到JSON的时候会把该字段对应的值转换成JSON字符串

你可能感兴趣的:(golang中struct成员变量的标签(Tag)说明和获取方式)