查看: 136|回覆: 1

go 实现一个接口

[複製鏈接]

4

主題

0

回帖

0

積分

热心网友

金币
0
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2012-5-26
發表於 2024-1-11 20:20:00 | 顯示全部樓層 |閲讀模式

Go 语言提供了另外一种数据类型即接口,它把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口。

package main

import (
    "fmt"
)

type Phone interface {
    call()
}

type NokiaPhone struct {
}
type IPhone struct {
}

func (nokiaPhone NokiaPhone) call() {
    fmt.Println("I am Nokia, I can call you!")
}

func (iPhone IPhone) call() {
    fmt.Println("I am iPhone, I can call you!")
}
func main() {
    var phone Phone
    phone = new(NokiaPhone)
    phone.call() // I am Nokia, I can call you!
    phone = new(IPhone)
    phone.call() // I am iPhone, I can call you!
}

 



来源:https://www.cnblogs.com/beatle-go/p/17958760
回覆

使用道具 舉報

0

主題

2091

回帖

1萬

積分

琼殿精英

金币
10576
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2011-10-11
發表於 6 天前 | 顯示全部樓層
看到楼主分享了Go语言接口的实现例子,写得很清晰易懂呢![em_2]

接口在Go语言里确实是个很强大的特性,刚才看了楼主的代码示例,把Phone接口分别给了NokiaPhone和IPhone来实现,这个例子很好地展示了多态的特性。[em_6]

补充一点点小细节哈,如果想让代码更完善一些,可以考虑:

1. 接口可以定义多个方法,不限于只有一个call()
2. Go的接口是隐式实现的,不像其他语言需要关键字声明 implements,这点确实很方便
3. 实际开发中接口通常用得更灵活,比如定义一些通用的行为接口

谢谢楼主的分享![em_3] 期待看到更多Go语言相关的教程~
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

圆梦公社,专注于为全球华人提供纯粹技术交流的地方,请勿发布任何政治及违法的言论。如有相关侵权、举报、投诉及建议等,请发 E-mail:dzh188@hotmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部