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

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

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

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


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

 

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

1) 接口本身不能创建实例,但是可以指向一个实现了该接口的自定义类型的变量(实例)

Function 主函数,类型是 interface

还是以此为例

代码如下:

//声明/定义一个接口

type Usb interface {//声明了两个没有实现的方法 start ()stop ()

//声明/定义一个接口

type Usb2 interface {

//声明了两个没有实现的方法 start ()Stop ()Test ()

package mainimport(

"fmt"

type AInterface interface

Say ()

C

func main ()

{

varIa AInterface

代码讲解:共有的代码分三部分,假设有个接口,有个 tap a 接口,intel,这个它的类型就是 interfaceA。然后假设有一个方法叫做 B,再来一个就写一个方法。所以不能去搞一个变量,写一个姓名叫 a,它的类型呢叫 B。实际上这个这个东西,必须有一个变量才行。所以一般来讲,接口本身不能创建实例,但是可以指向一个实现了该接口的自定义类型的变量

指向一个实现了该接口的自定义类型的变量

理解如下:举个例子

type AInterface interface{

Say ()

}

type stu struct {

Name string

}

func (stu Stu)Say(){

fmt. Print1n ("stu say () ")

var a AInterface = stu

a. Say ()

运行结果如下

image.png

运行结果不成立,调整结果如下,即可成立:

func (stu Stu)Say(){

fmt. Print1n ("stu say () ")

func main () {

var stu stu//结构体变量,实现了 Say ()

var a AInterface = stu

a. Say ()

运行结果如下

image.png

结果成立

2) 接口中所有的方法都没有方法体,即都是没有实现的方法。

3) 在 Golang 中,一个自定义类型需要将某个接口的所有方法都实现,我们说这个自定义类型实现了该接口。

4) 一个自定义类型只有实现了某个接口,才能将该自定义类型的实例(变量)赋给接口类型。

5) 只要是自定义数据类型,就可以实现接口,不仅仅是结构体类型。

打个比方

type integer int

func (1 integer) say()

{fmt. Println ("integer s1=", 1)

var i integer=10

var b AInterface 1b.say ()

// integer say 1=10

注意变化

因为 i 的变化,引起类型的变化

运行结果成立

image.png

相关文章
|
算法 测试技术 Go
【Go 编程实践】从零到一:创建、测试并发布自己的 Go 库
解释了为何需要开发自己的 Go 库,以及如何创建、测试和发布。文章以 Asiatz 库为例,详细阐述了创建目录、初始化项目、编写代码、测试、编写文档和发布等步骤,并强调了开发自己的 Go 库的优点,包括代码复用性、可维护性和可测试性。
322 0
【Go 编程实践】从零到一:创建、测试并发布自己的 Go 库
|
Go
Go 语言 errgroup 库的使用方式和实现原理
Go 语言 errgroup 库的使用方式和实现原理
208 0
|
数据可视化 Go 数据库
WEGO使用—在线GO功能注释
WEGO是华大基因公司的一个在线GO注释的网站,根据网站的介绍:WEGO(网络基因本体注释图)是一个简单但有用的工具,用于可视化,比较和绘制基因本体注释结果。随着围棋词汇越来越流行,WEGO在许多研究中被广泛采用和使用,最新一次的更新是在2018年。
611 0
|
4月前
|
JSON Go 数据格式
go 语言常见问题(1)
go 语言常见问题(1)
|
4月前
|
开发工具 git
根据使用者反馈,对开源项目 go-gin-api 新增两个功能
根据使用者反馈,对开源项目 go-gin-api 新增两个功能
33 0
|
4月前
|
消息中间件 关系型数据库 MySQL
为开源项目 go-gin-api 增加后台任务模块
为开源项目 go-gin-api 增加后台任务模块
35 0
|
7月前
|
安全 Java Go
Go 调用 C/C++ 函数全攻略
Go 调用 C/C++ 函数全攻略
448 0
|
Go
Go 1.18 新增三大功能之一“泛型”怎么使用?
Go 1.18 新增三大功能之一“泛型”怎么使用?
81 0
|
Go 开发者 索引
Go之流程控制大全: 细节、示例与最佳实践2
Go之流程控制大全: 细节、示例与最佳实践2
87 0
|
程序员 Go 索引
Go之流程控制大全: 细节、示例与最佳实践1
Go之流程控制大全: 细节、示例与最佳实践
127 0

热门文章

最新文章