go 中无效的内存地址或 nil 指针取消引用

我是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必须包含在用户结构中


慕容森
浏览 236回答 1
1回答

慕田峪4524236

当你用 初始化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以更好地理解接口基础知识。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go