Go语言接口和结构体

本文介绍了Go语言中接口的概念,强调了接口的无须显式实现特性,以及其在多态和高内聚低耦合设计原则中的作用。通过实例展示了如何定义接口并让自定义类型如Phone和Camera实现Usb接口,以及如何在Computer结构体中通过接口进行方法调用。文章还包含了实际代码运行的结果,展示如何在不指定具体类型的条件下,通过接口调用不同类型的实例方法。
摘要由CSDN通过智能技术生成

Go语言中接口的定义和使用

interface类型可以定义一组方法,但是这些不需要实现。并且  interface不能包含任何变量。到某个自定义类型(比如结构体 Phone)要使用的时候,在根据具体情况把这些方法写出来(实现)

接口里的所有方法都没有方法体,即接口的方法都是没有实现的方法。接口体现了程序设计的

多态和高内聚低偶合的思想

  Golang中的接口,不需要显式的实现。只要一个变量,含有接口类型中的所有方法,那么这个变量就实现这个接口。因此,Golang中没有  implement这样的关键字

 

package main
import (
"fmt"
)
//声明/定义一个接口
type Usb interface {
//声明了两个没有实现的方法
Start()
Stop()
}


type Phone struct {
}
//让 Phone实现   Usb接口的方法
func (p Phone) Start() {
fmt.Println("手机开始工作。。。")
}
func (p Phone) Stop() {
fmt.Println("手机停止工作。。。")
}
type Camera struct {
}
//让 Camera实现
Usb接口的方法
func (c Camera) Start() {
fmt.Println("相机开始工作。。。")
}
func (c Camera) Stop() {
fmt.Println("相机停止工作。。。")
}
//计算机


 

type Computer struct {
}
//编写一个方法 Working方法,接收一个  Usb接口类型变量
//只要是实现了  Usb接口(所谓实现   Usb接口,就是指实现了   Usb接口声明所有方法)
func (c Computer) Working(usb Usb) { //usb变量会根据传入的实参,来判断到底是  Phone,还是  Camera
//通过 usb接口变量来调用 Start和  Stop方法
usb.Start()
usb.Stop()
}
func main() {
//测试
//先创建结构体变量
computer := Computer{}
phone := Phone{}
camera := Camera{}
//关键点
computer.Working(phone)
computer.Working(camera) 
}

 运行结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值