美文网首页
Go语言开发中tag的使用

Go语言开发中tag的使用

作者: 小歪子go | 来源:发表于2018-01-19 11:48 被阅读0次

    初学beego框架,常常为了设置输出tag而查资料,下面是我📱和整理tag设置:
    针对JSON的输出,我们在定义struct tag的时候需要注意的几点是:
    字段的tag是"-",那么这个字段不会输出到JSON
    tag中带有自定义名称,那么这个自定义名称会出现在JSON的字段名中,例如上面例子中serverName
    tag中如果带有"omitempty"选项,那么如果该字段值为空,就不会输出到JSON串中
    如果字段类型是bool, string, int, int64等,而tag中带有",string"选项,那么这个字段在输出到JSON的时候会把该字段对应的值转换成JSON字符串

    type Server struct {
        // ID 不会导出到JSON中
        ID int `json:"-"`
        // ServerName 的值会进行二次JSON编码
        ServerName  string `json:"serverName"`
       //含有都是json多个json输出用到的tag的时候
        ServerName2 string `json:"serverName2,string"`
        // 如果 ServerIP 为空,则不输出到JSON串中
        ServerIP   string `json:"serverIP,omitempty"`
    }
    

    在涉及到beego orm时候tag设置

    type studentinfo struct {
        //设置主键且为自动增长(可以不设置,默认就是这样)
        Id          int    `pk:"auto"`
        //设置字段的长度
        Stuname     string `orm:"size(20)"`
        Stuidentify string `orm:"size(30)"`
        Stubirth    time.Time
        Stuclass    string `orm:"size(30)"`
        Stumajor    string `orm:"size(30)"`
    }
    
    type Userinfos struct {
        //设置主键自动增长的
        Id      int  `pk:"auto"`
        //设置字段的大小
        Name    string `orm:"size(30)"`
        // OneToOne 关系 同时含有json输出格式
        Profile *Profile `orm:"rel(one)"  json:"profile,omitempty`
        //Post    []*Post  `orm:"reverse(many)"` // 设置一对多的反向关系
    }
    
    type Profile struct {
        Id     int
        Age    int
        Email  string
        Gender string
        // 设置一对一反向关系(可选)
        User   *Userinfos `orm:"reverse(one)"` 
    }
    
    type Post struct {
        Id    int
        Title string
        //设置多对多关系
        Tags  []*Tag     `orm:"rel(m2m)"`
    }
    
    type Tag struct {
        Id    int
        Name  string
        //设置反向多对多关系
        Posts []*Post `orm:"reverse(many)"`
    }
    

    参考文档

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

    相关文章

      网友评论

          本文标题:Go语言开发中tag的使用

          本文链接:https://www.haomeiwen.com/subject/fcjooxtx.html