为什么在gorm这样的go LIB中使用struct中的sql标记?
我知道golang中struct中标签的必要性,以及如何通过golang中的reflect访问它。但是我已经搜索过了,没有找到一个可靠的答案来回答为什么在为sql结果编写struct时应该在struct中使用sql标记的问题。我研究了许多示例代码,人们在结构中使用了为什么在gorm这样的go LIB中使用struct中的sql标记?,sql,go,go-gorm,Sql,Go,Go Gorm,我知道golang中struct中标签的必要性,以及如何通过golang中的reflect访问它。但是我已经搜索过了,没有找到一个可靠的答案来回答为什么在为sql结果编写struct时应该在struct中使用sql标记的问题。我研究了许多示例代码,人们在结构中使用了sql:“index”,在结构中使用了sql:“primary\u key” 现在我已经在数据库层做了索引,这还不够吗?我是否也必须使用sql:“index”才能获得最佳结果?像这样,我已经在数据库中定义了主键属性,我是否也应该指定s
sql:“index”
,在结构中使用了sql:“primary\u key”
现在我已经在数据库层做了索引,这还不够吗?我是否也必须使用sql:“index”
才能获得最佳结果?像这样,我已经在数据库中定义了主键属性,我是否也应该指定sql:“primary\u key”
没有这些,我的代码似乎工作得很好。我只是想知道它们的优点和用法。我想你指的是像这样的ORM库 在这种情况下,像
sql:“primary_key”
或sql:“index”
这样的元数据只会告诉ORM在尝试设置表或迁移表时创建索引
中的两个示例可能是:索引、主键、外键、许多关系,或者在尝试将现有模式调整到模型中时,显式设置类型,例如:
type Address struct {
ID int
Address1 string `sql:"not null;unique"` // Set field as not nullable and unique
Address2 string `sql:"type:varchar(100);unique"`
Post sql.NullString `sql:"not null"`
}
您在哪里看到这个示例代码?大多数ORM都在使用它。除此之外,对于许多非ORM库(例如),结构标记用于将列名映射到结构字段,例如,源代码中的
EmailAddress
映射到数据库中的email\u address
。具有gorm和默认值的自动递增唯一id字段存在问题。简单地说就是不要在插入行时工作。