Copyright © 2022-2024 aizws.net · 网站版本: v1.2.6·内部版本: v1.23.3·
页面加载耗时 0.00 毫秒·物理内存 63.6MB ·虚拟内存 1299.8MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
Go 语言提供了接口(interface)数据类型来实现面向对象的多态性。
Go 语言的接口是把具有共性的方法定义在一起,这些方法只有函数签名,没有具体的实现代码(类似于 Java 中的抽象函数)。任何其它类型只要实现了接口中定义的所有方法,那么这个类型实现了该接口。
Go 语言的接口是非侵入式的,也就是实现该接口的类型无需显式声明,只需要实现了接口中定义的所有方法即可。
type Namer interface { method1(param_list) return_list method2(param_list) return_list ... }
这里的 Namer 就是接口的名字,只要符合标识符的规则即可。通常约定的接口的名字最好以 er, r, able 结尾(视情况而定),比较直观易懂。
package main import ( "fmt" ) type Phone interface { call() } type NokiaPhone struct { } func (nokiaPhone NokiaPhone) call() { fmt.Println("I am Nokia, I can call you!") } type IPhone struct { } func (iPhone IPhone) call() { fmt.Println("I am iPhone, I can call you!") } func main() { var phone Phone phone = new(NokiaPhone) phone.call() phone = new(IPhone) phone.call() }
在上面的例子中,我们定义了一个接口 Phone,接口里面有一个方法 call()。然后我们在 main 函数里面定义了一个 Phone 类型变量,并分别为之赋值为 NokiaPhone 和 IPhone。然后调用 call() 方法,输出结果如下:
I am Nokia, I can call you! I am iPhone, I can call you!
Go语言 类型转换:类型转换用于将一种数据类型的变量转换为另外一种类型的变量。Go语言不会对数据进行隐式的类型转换,只能手动去执行转换操作。Go语言 类型转换语法。类型转换需要注意的问题。Go语言 strconv 类型转换包。