登录
首页 >  Golang >  Go教程

Go 中的结构体实现接口:真的需要在定义中明确指定吗?

时间:2024-12-04 22:25:06 420浏览 收藏

今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《Go 中的结构体实现接口:真的需要在定义中明确指定吗?》,主要内容是讲解等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习!

Go 中的结构体实现接口:真的需要在定义中明确指定吗?

关于 go 中接口实现的疑问

在 go 语言中,通常需要在结构体定义中指定实现接口。然而,有人提出疑问,以下代码是否还算是实现了接口:

type Fruit interface {
    GetName() string
}

type Apple struct {
    name string
}

func (a Apple) GetName() string {
    return a.name
}

func main() {
    f := Apple{"Fuji"}
    fmt.Println(f.GetName())
}

func main1() {
    a := Apple{"Gala"}
    fmt.Println(a.GetName())
}

main 函数中,通过接口类型给结构体变量赋值后,会进行接口检查。而 main1 函数中只是对结构体变量直接使用,没有涉及到接口检查。因此,main1 中并未实现接口。

go 语言采用隐式接口,实现接口的所有方法就实现了接口,无需在结构体定义中指明。在编译过程中,go 按需检查接口,即只有在使用接口时才会进行检查。

因此,上述 apple 结构体确实实现了 fruit 接口。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《Go 中的结构体实现接口:真的需要在定义中明确指定吗?》文章吧,也可关注golang学习网公众号了解相关技术文章。

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>