• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

77_Go基础_1_44接口是一种类型

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
 1 package main
 2 
 3 import "fmt"
 4 
 5 // 1.定义接口
 6 type USB interface {
 7     start() //USB设备开始工作
 8     end()   //USB设备结束工作
 9 }
10 
11 // 2.实现类
12 type Mouse struct {
13     name string
14 }
15 
16 type FlashDisk struct {
17     name string
18 }
19 
20 func (m Mouse) start() {
21     fmt.Println(m.name, "鼠标,准备就绪,可以开始工作了,点点点。。")
22 }
23 func (m Mouse) end() {
24     fmt.Println(m.name, "结束工作,可以安全退出。。")
25 }
26 
27 func (f FlashDisk) start() {
28     fmt.Println(f.name, "准备开始工作,可以进行数据的存储。。")
29 }
30 func (f FlashDisk) end() {
31     fmt.Println(f.name, "可以弹出。。")
32 }
33 
34 func (f FlashDisk) deleteData() {
35     fmt.Println(f.name, "U盘删除数据。。")
36 }
37 
38 // 3.测试方法 传递的是一个接口类型,就是为了执行接口内所有的方法
39 func testInterface(usb USB) { //usb = m1  usb = f1
40     usb.start()
41     usb.end()
42 }
43 
44 func main() {
45     /*
46         接口:interface
47             在Go中,接口是一组方法签名。
48 
49             当某个类型为这个接口中的所有方法提供了方法的实现,它被称为实现接口。
50 
51             Go语言中,接口和类型的实现关系,是非侵入式
52 
53             //其他语言中,要显示的定义
54             class Mouse implements USB{}
55 
56         1.当需要接口类型的对象时,可以使用任意实现类对象代替
57         2.接口对象不能访问实现类中的属性
58 
59 
60         多态:一个事物的多种形态
61             go语言通过接口模拟多态
62 
63             就一个接口的实现
64                 1.看成实现本身的类型,能够访问实现类中的属性和方法
65                 2.看成是对应的接口类型,那就只能够访问接口中的方法
66 
67         接口的用法:
68             1.一个函数如果接受接口类型作为参数,那么实际上可以传入该接口的任意实现类型对象作为参数。
69             2.定义一个类型为接口类型,实际上可以赋值为任意实现类的对象
70 
71 
72         鸭子类型:
73 
74     */
75 
76     // 1.创建Mouse类型
77     m1 := Mouse{"罗技小红"}
78     fmt.Println(m1.name)
79 
80     // 2.创建FlashDisk
81     f1 := FlashDisk{"闪迪64G"}
82     fmt.Println(f1.name)
83 
84     testInterface(m1)
85     testInterface(f1)
86 
87     var usb USB
88     usb = f1
89     usb.start()
90     usb.end()
91 
92     f1.deleteData() // 自己独有的方法
93 
94     var arr [3]USB // 接口是一种类型
95     arr[0] = m1
96     arr[1] = f1
97     fmt.Println(arr) // [{罗技小红} {闪迪64G} <nil>]
98 }

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
go指南学习笔记发布时间:2022-07-10
下一篇:
Go 语言函数方法发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap