Golang中struct結構標籤(Tag)的使用
阿新 • • 發佈:2018-12-01
Golang中struct結構標籤(Tag)的使用
在看別人的一些程式碼時,宣告結構時有個json:name
是做什麼用的?
想知道原因得了解下:
在golang中,命名都是推薦都是用駝峰方式,並且在首字母大小寫有特殊的語法含義:包外無法引用。但是由經常需要和其它的系統進行資料互動,例如轉成json格式,儲存到Redis等等。這個時候如果直接用屬性名來作為鍵值會不符合專案要求。
於是就有了tag,也就是有了json:name
或者orm:"size(1000)"
也或者json:name orm:"size(1000)"這樣的宣告。
在我們把結構轉成json時 就會以tag裡面的名字出現。
下面這是我在用beego框架的orm宣告的一個結構體
// 評論
type Comment struct {
Id int64 `json:"id"`
Tid int64 `json:"tid"`
NickName string `json:"nickName"`
Content string `json:"content" orm:"size(1000)"`
Created time.Time `json:"created" orm:"index"`
}
當我們在控制器中寫api時就可以直接取了
func (this *ApiCommentController) All() { tid := this.Input().Get("tid") // 獲取評論 comments, err := models.GetAllComment(tid) if err != nil { beego.Error(err) } this.Data["json"] = map[string]interface{}{ "code": 0, "message": "獲取成功", "date": comments, } this.ServeJSON() return }
這時訪問介面返回的資料就是以tag裡面的命名的key