新来到这里.我正在参观 Go并且遇到一个词,我很困惑它是什么.
这是第11页方法一节在这里.它说," 界面值可以被认为是价值和具体类型的元组."
我的理解是接口值是实现该接口的变量.例如:
type Animal interface {
run()
}
type Cat struct { … }
func main() {
kitty := Cat{ … }
}
func (c Cat) run() { … }
Run Code Online (Sandbox Code Playgroud)
是kitty接口值吗?
在您的情况下,因为您使用了短变量声明来创建kitty,所以从右侧表达式推断出类型,并且类型kitty将是具体类型Cat.
但由于Cat 具体类型(非接口类型)实现了Animal 接口类型,因此您可以Cat为类型为的变量赋值Animal,如下例所示:
kitty := Cat{}
var kitty2 Animal = kitty
Run Code Online (Sandbox Code Playgroud)
规范的"实施"意味着:
接口类型指定称为其接口的方法集.接口类型的变量可以使用方法集存储任何类型的值,该方法集是接口的任何超集.据说这种类型实现了接口.
接口值在逻辑上包含一个(值;类型)对,它们是存储在它们中的值,以及它们的具体类型.
有关界面内部的更多详细信息,请阅读博客文章:Go Blog:反射
和数据结构的规律:接口(由Russ Cox提供).
有关为什么需要接口或如何/何时使用它们的介绍,请参阅为什么Golang需要接口?
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |