Copyright © 2022-2025 aizws.net · 网站版本: v1.2.6·内部版本: v1.25.2·
            页面加载耗时 0.00 毫秒·物理内存 136.8MB ·虚拟内存 1438.1MB
        
        欢迎来到 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 类型转换包。