golang中 service层 怎么使用New 注入dao层中的结构体
时间: 2024-02-11 14:06:00 浏览: 33
在Go语言中,我们可以使用依赖注入(Dependency Injection)的方式实现Service层和DAO层之间的解耦,常用的依赖注入方式有构造函数注入和方法注入。
构造函数注入是指在创建Service层对象时,将DAO层对象作为参数传入构造函数中。这样在Service层中就可以通过调用DAO层对象的方法来访问数据库。示例代码如下:
```go
package service
import (
"dao"
)
type UserService struct {
userDao *dao.UserDao
}
func NewUserService(userDao *dao.UserDao) *UserService {
return &UserService{userDao: userDao}
}
func (s *UserService) GetUser(id int) (*User, error) {
return s.userDao.GetUser(id)
}
```
在上面的示例代码中,我们定义了一个UserService结构体,并在其中注入了一个UserDao结构体。NewUserService函数用于创建UserService对象,它接收一个UserDao对象作为参数,然后返回一个新的UserService对象。
另外一种方式是方法注入,即在Service层中定义一个Set方法,用于设置DAO层对象。示例代码如下:
```go
package service
import (
"dao"
)
type UserService struct {
userDao *dao.UserDao
}
func (s *UserService) SetUserDao(userDao *dao.UserDao) {
s.userDao = userDao
}
func (s *UserService) GetUser(id int) (*User, error) {
return s.userDao.GetUser(id)
}
```
在上面的示例中,我们在UserService中定义了一个SetUserDao方法,用于设置UserDao对象。在使用Service层时,我们可以先创建一个UserService对象,然后调用它的SetUserDao方法,将UserDao对象注入到UserService对象中。
以上两种方式都可以实现Service层和DAO层之间的解耦,具体使用哪种方式取决于项目的需求和开发团队的喜好。