golang中 service和dao层怎么通过interface交互
时间: 2023-12-10 16:40:57 浏览: 181
在 Golang 中,Service 层和 DAO 层之间可以通过 interface 进行交互。具体来说,Service 层定义一个 interface,包含它所需的所有 DAO 方法,然后在实现 Service 层的时候,将需要用到的 DAO 对象作为参数传入,这个 DAO 对象必须实现了 Service 层所定义的 DAO 接口。
下面是一个简单的例子:
```go
// 定义 DAO 接口
type UserDao interface {
GetUser(id int) (*User, error)
}
// 定义 Service 接口
type UserService interface {
GetUser(id int) (*User, error)
}
// 实现 DAO 接口
type UserDaoImpl struct {}
func (dao *UserDaoImpl) GetUser(id int) (*User, error) {
// 从数据库中获取用户信息
}
// 实现 Service 接口
type UserServiceImpl struct {
userDao UserDao
}
func (service *UserServiceImpl) GetUser(id int) (*User, error) {
return service.userDao.GetUser(id)
}
// 创建 DAO 对象和 Service 对象
userDao := &UserDaoImpl{}
userService := &UserServiceImpl{userDao: userDao}
// 使用 Service 对象
user, err := userService.GetUser(1)
```
在上面的例子中,UserService 接口定义了 GetUser 方法,而 UserDao 接口定义了 GetUser 方法的具体实现。当 UserServiceImpl 实现了 UserService 接口时,需要通过构造函数将 UserDao 对象传入,然后就可以调用 UserDao 的 GetUser 方法了。
阅读全文