gpt4 book ai didi

go - Go接口(interface)值是实现接口(interface)的整个变量吗?

转载 作者:IT王子 更新时间:2023-10-29 01:23:07 27 4
gpt4 key购买 nike

这里是 Go 的新手。我正在服用 tour的 Go 并遇到一个词,我很困惑它是什么。

这是方法部分的第11页here .它说,“接口(interface)值可以被认为是值和具体类型的元组。”

我的理解是接口(interface)值 是实现该接口(interface)的变量。例如:

type Animal interface {
run()
}

type Cat struct { … }

func main() {
kitty := Cat{ … }
}

func (c Cat) run() { … }

kitty 是接口(interface)值吗?

最佳答案

在你的情况下,因为你使用了 short variable declaration要创建 kitty,类型是从右侧表达式推断的,kitty 的类型将是具体类型 Cat

但是由于 Cat 具体 类型(非接口(interface)类型)实现了 Animal interface类型,您可以将 Cat 的值分配给类型为 Animal 的变量,如本例所示:

kitty := Cat{}
var kitty2 Animal = kitty

“实现”规范意味着:

An interface type specifies a method set called its interface. A variable of interface type can store a value of any type with a method set that is any superset of the interface. Such a type is said to implement the interface.

接口(interface)值在原理上包含一个(值;类型)对,即存储在其中的值及其具体类型。

有关界面内部结构的更多详细信息,请阅读博客文章:The Go Blog: The Laws of Reflection
Go Data Structures: Interfaces (by Russ Cox) .

有关为什么需要接口(interface)或如何/何时使用它们的介绍,请参阅 Why are interfaces needed in Golang?

关于go - Go接口(interface)值是实现接口(interface)的整个变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50639812/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com