使用go-pg创建PostgreSQL表时表名自动加s的原因咨询
Go-PG自动生成复数表名的原因
这是go-pg的默认命名规则:它会自动将结构体名称转换为复数形式,作为对应的数据库表名,这是为了契合数据库设计中常见的“复数表名”惯例(比如用users存储用户数据而非user)。
go-pg内部集成了词形转换逻辑,能处理常规单数名词的复数变化(比如story转为stories);对于像Newtb这类自定义结构体名称,它会直接在末尾添加s生成复数表名newtbs。
如果需要自定义表名,有两种常用方式:
- 给结构体添加
pg标签指定表名:
type Newtb struct { Id int64 Name string Emails []string } `pg:"newtb"`
- 实现
TableName()方法:
type Newtb struct { Id int64 Name string Emails []string } func (Newtb) TableName() string { return "newtb" }
内容的提问来源于stack exchange,提问作者Pablo
相关产品推荐
相关产品推荐

