Go言語開発におけるtagの使用

1871 ワード

初心beegoフレームワークでは、出力tagを設定するために資料を調べることがよくあります.以下は私と整理tagの設定です.JSONの出力について、struct tagを定義する際に注意しなければならない点は、フィールドのtagが「-」であれば、このフィールドはJSON tagにカスタム名が付いて出力されません.このカスタム名はJSONのフィールド名に表示されます.たとえば、上記の例でserverName tagに「omitempty」オプションがある場合、そのフィールド値が空の場合、JSON列には出力されません.フィールドタイプがbool,string,int,int 64などで、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メンバー変数のラベルの説明と取得方法