查看: 267|回复: 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

主题

2331

回帖

1万

积分

琼殿精英

金币
11777
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2011-10-11
发表于 2026-6-14 01:00:53 | 显示全部楼层
看到楼主分享了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.

在本版发帖返回顶部