我是golang的新手。我的代码有问题。这是我的代码看起来像type IUser interface { GetUser(name string) string}func GetUser(name string) string { return name}type User struct { Yy IUser}func main() { u := User{} fmt.Println(u.Yy.GetUser("bambang"))}当我运行这段代码时。错误显示错误“无效的内存地址或零指针取消引用”。如何修复我的代码。供您参考,IUser interface必须包含在用户结构中
1 回答
慕田峪4524236
TA贡献1875条经验 获得超5个赞
当你用 初始化User时{},你没有初始化它的任何成员(Yy在这种情况下),这意味着它们都有默认值。接口的默认值为nil。
您需要传入一个实现IUser初始化的类型的实例Yy,但您尚未在代码中声明任何实现类型。
这是一个简单的例子,它的MySQLUser类型实现了IUser. 注意如何Yy初始化。
type IUser interface {
GetUser(name string) string
}
// MySQLUser implements IUser
type MySQLUser struct {
}
func (u MySQLUser) GetUser(name string) string {
return name
}
type User struct {
Yy IUser
}
func main() {
u := User{Yy: MySQLUser{}} // pass initialised IUser implementation
fmt.Println(u.Yy.GetUser("bambang"))
}
您可能应该查看A Tour of Go或Go by Example以更好地理解接口基础知识。
- 1 回答
- 0 关注
- 232 浏览
添加回答
举报
0/150
提交
取消