我有一个项目,最终会有多个应用程序(二进制文件)共享某些通用模型(结构),并可能共享数据库访问权限。因此,我希望他们能够选择每个应用程序将依赖的软件包。因此,就像有一个名为“ Car”的结构一样,应用程序可以导入“ car”包并访问car.Car或其他任何东西。但是,如果它还需要处理Car类型的DB持久性,则应该能够导入这样做的东西。像“ cardao”包装之类的东西。我希望它们是独立的,这样不需要接触数据库的事情就不需要引入对数据库驱动程序等的依赖。而且,有很多模型可以彼此结合使用,也可以互相结合使用,也可以结合使用或不结合使用任何支持包(例如本例中的DB包)。
我不确定这种结构的惯用方式是什么。我习惯于只拥有一组直接依赖项,而这些依赖项要么全部被获取,要么什么都没有。
我正在考虑将其构建为:
myapp
+- cmd
+- app1
+- main.go
+- app2
+- main.go
+- car
+- car.go (contains Car struct)
+- person
+- person.go (contains Person struct)
+- cardao
+- cardao.go (contains like "SaveCar" and "GetCarById" or whatever)
+- persondao
+- persondao.go (contains like "SavePerson" and "GetPersonById" or whatever)
因此,在这种情况下,app1可以依赖于所有的结构和数据访问内容,但是app2可能只需要汽车而不是Person,并且不需要任何数据访问。
有什么想法吗?