一架梯子,一头程序猿,仰望星空!
GORM面试题 > 内容正文

GORM模型字段标签的作用是什么?


问题简答

在GORM中,可以通过在模型的结构体字段上添加标签来指定列名、列类型等元数据信息。例如:可以用于定义表名,主键,非空,唯一键,列默认值以及其他元数据信息。标签的作用是让GORM可以自动识别struct模型的一些配置信息。

问题详解:

GORM 支持的标签

  • column: 定义列名,默认值为字段名
  • type: 定义列的数据类型,默认会自动匹配 Go 类型和数据库类型
  • size: 定义列的大小,如 varchar(100) 中的 100
  • primaryKey: 标记为主键
  • autoIncrement: 标记为自增长
  • default: 定义默认值
  • not null: 定义字段不可为 null
  • unique: 定义字段为唯一值
  • index: 定义索引
  • uniqueIndex: 定义唯一索引
  • precision: 定义精度
  • scale: 定义小数位数
  • embedded: 嵌入结构体,可以将结构体的字段映射到当前表中
  • size: 定义列大小
  • comment: 定义列注释
  • default: 定义列默认值

GORM模型标签使用例子

通过在struct字段后面,使用gorm:"标签内容"语法定义标签

type User struct {
    // 设置为主键且自增
    ID        int64     `gorm:"primaryKey;autoIncrement"`
    // 唯一约束、不能为空、长度为255
    Name      string    `gorm:"unique;not null;size:255"`
    // 唯一约束、不能为空、长度为255
    Email     string    `gorm:"unique;not null;size:255"` 
    // 不能为空,设置默认值为当前时间戳
    CreatedAt time.Time `gorm:"not null;default:CURRENT_TIMESTAMP"` 
}