struct golang中字段的额外值

时间:2015-04-15 17:57:28

标签: go

这是什么"额外"字段gorm:"primary_key"在创建结构时会这样做吗?

type Model struct {
    ID        uint `gorm:"primary_key"`
    CreatedAt time.Time
    UpdatedAt time.Time
    DeletedAt *time.Time
}

2 个答案:

答案 0 :(得分:1)

它是gorm包使用的标记,让包知道该字段将用作主键

请参阅https://github.com/jinzhu/gorm/blob/b9a39be9c5e77bb0bfebd516114a8a4d605c645a/model_struct.go#L135-L139

gormSettings := parseTagSetting(field.Tag.Get("gorm"))
if _, ok := gormSettings["PRIMARY_KEY"]; ok {
    field.IsPrimaryKey = true
    modelStruct.PrimaryFields = append(modelStruct.PrimaryFields, field)
}

答案 1 :(得分:0)

这就是我所说的'注释'它们被各种包(在本例中为gorm)使用,以提供有关如何处理该类型的更多信息。最常见的是你在数据传输对象(如json和xml)上看到它们,在大多数用例中,这两个包都需要它们。

在这种情况下,您告诉gorm此字段是主键。从粗略的一瞥那些包文档来看它是用于关系建模(比如设置类型来映射到rmdb或者那种性质的东西)所以在这里看看像nullable,pk或fk这样的东西是有意义的。