接口作为方法参数传递 在方法内部修改结构体,示例
type IUserService interface {
GenId()
}
type UserService struct {
id string
}
func (u *UserService) GenId() {
generateUUID, _ := uuid.GenerateUUID()
u.id = generateUUID
}
func BuildUser(service IUserService) {
service.GenId()
}
func main() {
userService := UserService{}
BuildUser(&userService)
//BuildUser(userService) *UserService实现了IUserService,UserService没有实现IUserService
println(userService.id)
}
该示例展示了如何在Go语言中通过接口作为方法参数传递,并在方法内部修改结构体成员。定义了一个IUserService接口和UserService结构体,UserService实现了GenId方法用于生成UUID并更新id字段。在BuildUser函数中,接收IUserService接口类型的参数,调用GenId方法,从而修改了传入 UserService 实例的id。在main函数中,创建UserService实例,通过指针传递给BuildUser,最后打印出修改后的id。
2万+

被折叠的 条评论
为什么被折叠?



