GO语言基础教程(117)Go接口:Go接口深度解剖:当Nokia遇见iPhone的奇妙对话

想象一下,Nokia和iPhone能互相打电话聊天,这不是科幻电影,而是Go语言接口的魔法世界。

一、什么是Go接口?一个比喻让你秒懂

简单来说,Go语言中的接口就是一种行为约定,它只定义该做什么,而不关心是谁来做、怎么做。

回想一下生活中的插座接口:它规定了电压、插孔形状等标准,你的手机、电脑、电视只要插头符合这个标准,就都能通电使用。至于这些设备内部如何工作,插座完全不关心。

Go接口的核心设计理念:关注行为而非数据。它只关心一个类型能做什么,而不关心这个类型是什么

来看一个最简单的Go接口定义:

// 定义Phone接口:约定"打电话"的行为
type Phone interface {
    call() // 接口仅声明方法签名(无具体实现)
}

这就是Go语言的接口——轻量、简洁、直击要害

二、接口的实战:当Nokia遇上iPhone

理论说多了容易睡着,来看一个活生生的例子:

package main

import (
    "fmt"
)

// 1. 定义Phone接口:约定"打电话"的行为
type Phone interface {
    call() // 接口仅声明方法签名(无具体实现)
}

// 2. 定义NokiaPhone结构体:具体的手机类型
type NokiaPhone struct {
    // 结构体可无字段,仅通过方法实现接口
}

// 3. NokiaPhone实现Phone接口的call()方法(值接收者)
func (nokiaPhone NokiaPhone) call() {
    fmt.Println("I am Nokia, I can call you!")
}

// 4. 定义IPhone结构体:另一种手机类型
type IPhone struct {
}

// 5. IPhone实现Phone接口的call()方法(值接收者)
func (iPhone IPhone) call() {
    fmt.Println("I am iPhone, I can call you!")
}

func main() {
    // 6. 定义接口变量phone(类型为Phone接口)
    var phone Phone

    // 7. 接口变量赋值为NokiaPhone实例,调用call()
    phone = new(NokiaPhone) // new(NokiaPhone)返回结构体指针,仍可赋值给接口变量
    phone.call()

    // 8. 接口变量赋值为IPhone实例,调用call()
   
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

值引力

持续创作,多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值