个人比较喜欢 controller、service、dao的命名规范来写项目(虽然还没完成过任何一个go项目)。
现在遇到一个组织形式的问题。
我比较喜欢依赖注入式构建项目。比如
```
type Dao struct {
db*sql.DB
}
func NewDao(db*sql.DB) *Dao {
return &Dao {
Db: db,
}
}
// dao/menu.go
func(d *Dao) AddMenu(){
d.db.insert(.....)
}
// dao/tag.go
func(d *Dao) AddTag(){
d.db.insert(.....)
}
type Service struct {
dao *Dao
}
func NewService (d *Dao ) *Service {
return &Service {
dao: d,
}
}
// service/menu.go
func(s *Service ) AddMenu(){
s.dao.AddMenu()
}
// service/tag.go
func(s *Service ) AddTag(){
s.dao.AddTag()
}
type TagController struct{
service *Service
}
....
```
而不是将整个 service 都导入,然后使用
```
service.AddTag(xx)
```
但是上面那种所谓依赖的方式,比较麻烦在初始化的时候
```
// 先获取db
dao := NewDao(db)
service: NewService(dao)
tagController := NewTagController(service)
menuController := NewMenuController(service)
....
```
如果是第一种形式的话,各位大佬有什么好的方式,赐教一下。
有疑问加站长微信联系(非本文作者)