我是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"))
}
当我运行此代码。错误显示错误“无效的内存地址或nil指针取消引用”。
如何修复我的代码。对于您的信息,
IUser interface
必须包含在User struct中 最佳答案
当您使用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以更好地了解界面基础知识。