关于 golang 同一个 package 下多目录问题

imherer 15天前 14

go mod 方式创建的项目

假如我有如下目录结构

models
├── dir1
│   ├── menu.go
│   ├── role.go
│   └── user.go
├── dir2
│   ├── role.go
│   └── user.go
├── system.go
└── others.go

我现在想把 models 下所有的.go 文件的 package 都定义为 models,但是这样定义了子目录下的想过models.的方式来访问却不行

好像只能将 dir1 下的 package 定义为 dir1,然后在impor "models/dir1" ,最后通过dir1. 访问

还有一个问题就是我上面有 2 个 user.go 都定义了 User struct,在使用 gorm 创建表能分别指定表名吗?还是说只能将 struct 定义成不一样来搞定了?

最新回复 (5)
  • catror 11天前
    引用 2
    多个目录就是多个 package,不存在一个 package 多个目录这样的说法。
    gorm 可以支持指定表名。
  • 楼主 imherer 11天前
    引用 3
    @catror 好吧,谢谢!
  • Carlgao 11天前
    引用 4
    没有必要这么定义目录层级,我猜 Go 这么设计 package 是高内聚的考虑
    你把每个 model 都定义一个 struct,每个 struct 对应一个 model,然后把函数都绑定到这个 struct 上就行了
    这样调用的时候就是 models.xModel{} models.xxxModel{}
  • 楼主 imherer 11天前
    引用 5
    @Carlgao 主要是想做文件区分。 就例如上面的例子有 2 个 user,如果放到同一个目录的话,必须得换名字
  • Carlgao 11天前
    引用 6
    @imherer 把一个模型写成两个这种问题本身就很奇怪,如果真的要这么做那就只有写两个不一样的 user struct 名字,然后指定同一个表名就行了,还有一种是使用组合的方式,struct 内嵌另一个 struct
  • 游客
    7
返回