Go 接口注意事项和细节(2) | 学习笔记

简介: 快速学习 Go 接口注意事项和细节(2)

开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程Go 接口注意事项和细节(2)】 学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/626/detail/9701


Go 接口注意事项和细节(2)

 

一、接口(interface)注意事项和细节2

1. 一个自定义类型可以实现多个接口

举例

想实现新接口,创建新的接口,用 A2代替 C 方法, 由上可见,Monster 可代替

代码如下:

type AInterface interface {

Say ()}type BInterface interface

Hello ()

type Monster struct {

{

func (m Monster) Hello() {

fmt.println ("Monster Hello () ~~")}func (m Monster) Say()

{

fmt. Println ("Monster Say () ~~")

代码讲解:有一个接口,写作个 a 接口,再写个 b 接口。命名方法叫做 hello,a 接口和 b 接口各有一个。现在写一个代码 master,它是个结构体。把 b 接口里面 hello 给事先与 monster 接口相接,从而运行代码时,monster 实现了 a interfance 同时也实现了 b interface.

//Monster实现了 AInterface 和 BInterfacevar monster Monstervar

a2 AInterface=monstervar

b2 BInterface=monste

a2. Say ()

b2. Hello ()

此时,运行方法即可成功

image.png

2. Golang 接口中不能有任何变量一个自定义类型可以实现多个接口

type AInterface interfacet

Testo1 ()

Testez ()

代码讲解:首先找到代码的方法,忽略代码的定义名称,但你一定要把他的方法找到,不用显示这个开始的定义是 c 接口的,你不用这样子,只要把方法找到就可以。他是第三,把这三个方法都实现了。此时,这个结构体就是,后面检验这个结构体。创建一个 student,就是 stu,把这个变量交给 a,看他能不能接收到。把这个交给他,再看代码有没有问题。调一下 task,看一下代码哪里有问题。此时跑一下代码

运行结果如下

image.png

3. 一个接口(比如 A 接口)可以继承多个别的接口(比如 B,C 接口),这时如果要实现 A 接口,也必须将 B,C 接口的方法也全部实现。

举例来看

func (i integer) say() {

fmt. Println ("integer Say i =" ,i )

Name string

Say ()

创建A、B、C 接口

type BInterface interface {

test01 ()

}type CInterface interface {

test02 ()

type AInterface interface {

BInterfaceCInterfacetest03 ()

//如果需要实现 AInterface,就需要将 BInterface CInterface 的方法都实现 type stu struct {

}func

func main () {

这样就能实现接口对接

4. interface 类型默认是一个指针,如果没有对 interface 初始化就使用,那么会输出。

5. 空接口 interface{}没有任何方法,所以所有类型都实现了空接口【案例演示】

举例

func main () {

var stu stuvar a AInterface

= stua.test01 ()

var tT

=stu//okfmt. Println (t)var t2 interface {}

=stuvar numl float64 =8. 8t2

= num1fmt. Println (t2)

此时跑一次代码,便可以呈现出一个值。

image.png

相关文章
|
20天前
|
Go 开发工具
百炼-千问模型通过openai接口构建assistant 等 go语言
由于阿里百炼平台通义千问大模型没有完善的go语言兼容openapi示例,并且官方答复assistant是不兼容openapi sdk的。 实际使用中发现是能够支持的,所以自己写了一个demo test示例,给大家做一个参考。
|
1月前
|
存储 Rust Go
Go nil 空结构体 空接口有什么区别?
本文介绍了Go语言中的`nil`、空结构体和空接口的区别。`nil`是预定义的零值变量,适用于指针、管道等类型;空结构体大小为0,多个空结构体实例指向同一地址;空接口由`_type`和`data`字段组成,仅当两者均为`nil`时,空接口才为`nil`。
Go nil 空结构体 空接口有什么区别?
|
1月前
|
缓存 监控 前端开发
在 Go 语言中实现 WebSocket 实时通信的应用,包括 WebSocket 的简介、Go 语言的优势、基本实现步骤、应用案例、注意事项及性能优化策略,旨在帮助开发者构建高效稳定的实时通信系统
本文深入探讨了在 Go 语言中实现 WebSocket 实时通信的应用,包括 WebSocket 的简介、Go 语言的优势、基本实现步骤、应用案例、注意事项及性能优化策略,旨在帮助开发者构建高效稳定的实时通信系统。
95 1
|
3月前
|
存储 Go
Go to Learn Go之接口
Go to Learn Go之接口
37 7
Go语言的条件控制语句及循环语句的学习笔记
本文是Go语言的条件控制语句和循环语句的学习笔记,涵盖了if语句、if-else语句、if嵌套语句、switch语句、select语句以及for循环和相关循环控制语句的使用方法。
Go语言的条件控制语句及循环语句的学习笔记
|
3月前
|
存储 Go
Go: struct 结构体类型和指针【学习笔记记录】
本文是Go语言中struct结构体类型和指针的学习笔记,包括结构体的定义、成员访问、使用匿名字段,以及指针变量的声明使用、指针数组定义使用和函数传参修改值的方法。
|
3月前
|
人工智能 算法 搜索推荐
Go学习笔记-代码调
近年来,人工智能技术飞速发展,Cody作为由Sourcegraph开发的一款AI驱动编码助手,应运而生。它不仅提供代码预测与补全,还能深度理解代码上下文,为开发者提供准确建议,提升编码效率和质量。Cody能识别潜在错误并提出修复建议,缩短调试时间,同时进行智能代码审查,帮助优化代码结构和风格。未来,随着AI技术进步,Cody将不断学习优化,成为开发者不可或缺的伙伴,推动编程领域的创新与发展。
36 0
|
4月前
|
XML 存储 JSON
在Go中使用接口:实用性与脆弱性的平衡
在Go中使用接口:实用性与脆弱性的平衡
|
4月前
|
SQL 安全 测试技术
[go 面试] 接口测试的方法与技巧
[go 面试] 接口测试的方法与技巧
|
4月前
|
存储 安全 程序员