直接回答:结构体标签是写在反引号里的一组 key:"value" 键值对,通过反射读取;它只是字符串,写错字段名不会报错,只会静默失效,这是最常见的坑。
Tag 由反引号包含,由一对或几对的键值对组成,通过空格来分割键值。格式如下
1
| `key01:"value01" key02:"value02" key03:"value03:XXX,Ondele:set null"`
|
1 2 3 4 5
| type Person struct { Name string `json:"name"` Age int `json:"age,string"` Addr string `json:"addr,omitempty"` }
|
由于 Person 结构体里的 Addr 字段有 omitempty 属性,因此 encoding/json 在将对象转化 json 字符串时,只要发现对象里的 Addr 为 false, 0, 空指针,空接口,空数组,空切片,空映射,空字符串中的一种,就会被忽略。
结构体中Age字段有string,所以在转的时候会将int转为string
1 2 3 4 5 6 7 8 9 10
|
type StudentWithOption struct { StudentId string StudentName string `json:"sname"` StudentClass string `json:"class,omitempty"` StudentTeacher string `json:"-"` }
|
gorm键约束
1 2 3 4 5 6 7 8 9 10
| gorm定义 数据库字段约束 gorm:"primary_key" 字段设置为主键 gorm:"AUTO_INCREMENT" 字段设置为自增 gorm:"size:20 字段长度设置为20 gorm:"index:idx_user_id 字段设置普通索引,名称为idx_user_id gorm:"not null 设置字段为非空 gorm:"type:varchar(64)" 设置字段为varchar类型,长度为64 gorm:"column:remark" 设置数据库字段名为remark gorm:"-" 忽略此字段,不在表中创建该字段 gorm:"default:'默认'" 设置字段的默认值
|
这篇笔记整理自我自己的实践记录,如果做法有出入,或者你踩过别的坑,欢迎到留言板一起聊聊。