You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 19:33:23