我们如何在 GORM/Golang 中创建与 Django field.choices 相似的模型字段类型

How can we create a similar model field type to Django field.choices in GORM/Golang

我正在尝试创建一个结构字段,并将其值限制为一个值列表,即

state =["locked", "unlocked"]

现在在 Django 模型中我们使用字段选择,即

class Book(models.Model):
    LOCKED = 'LK'
    UNLOCKED = 'UN'
    STATE = [
    ('LK', 'Locked'),
    ('UL', 'Unlocked'),
]
    book_state = models.CharField(choices=STATE, default=LOCKED)

尝试在 Go 中使用 gorm.model 结构数据类型复制上述内容。

解决方案:创建一个带有字符串的自定义 golang 类型并将其添加为 gorm 模型字段

type  BookState string

const  (
    Locked  BookState = "locked"
    Unlocked BookState = "unlocked" 
)

然后创建你的 gorm 结构模型字段

type Book struct {
    Name  string `json:"name" validate:"required"`
    State BookState `json:"state" validate: "required"` 
    ....
}