当前位置: 首页 > news >正文

Go语言 接口(interface)

 本篇文章主要为Go语言 接口定义、示例、类型断言及常用场景。

 

目录

接口(interface)

接口示例

类型断言

常用场景

总结


接口(interface)

接口是和调用方的一种约定,它是一个高度抽象的类型。

不用和具体的实现细节绑定在一起,关键字interface。

interface不仅仅是用于处理多态的,它可以接受任意的数据类型,有点类似void。

 

接口示例

示例如下:

package mainimport "fmt"// 在go语言中,有专门的关键字interface来代表接口
// interface不仅仅是用于处理多态的,它可以接受任意的数据类型,有点类似void。func main() {// var i,h,k int// 定义三个接口类型var i, j, k interface{}names := []string{"dake", "liyu"}i = namesfmt.Println("i代表切片数组:", i)age := 20j = agefmt.Println("j代表数字:", j)str := "hello"k = strfmt.Println("k代表字符串:", k)
}

运行结果:

i代表切片数组: [dake liyu]
j代表数字: 20
k代表字符串: hello

 

类型断言

用来判断一个接口的值是否该接口的某个具体类型。

现在知道k是interface,但是不能够明确知道它代表的数据的类型,

ok是类型断言是否成功的标志,通过ok来判断数据的类型,true是成功,false表示失败。

示例如下:

kvalue, ok := k.(int)
if !ok {fmt.Println("k不是int")
}else{fmt.Println("k是int, 值为:", kvalue)
}

 

常用场景

最常用的场景:把interface当成一个函数的参数,(类似于Print),

使用switch来判断用户输入的不同类型;根据不同类型,做相应逻辑处理。

示例如下:

package mainimport "fmt"func main() {// 创建一个具有三个接口类型的切片arr := make([]interface{}, 3)arr[0] = 1arr[1] = "面朝大海 春暖花开"arr[2] = truefor _, value := range arr{// 可以获取当前接口的真正数据类型switch v:=value.(type) {case int:fmt.Printf("当前类型为int,内容为:%d\n", v)case string:fmt.Printf("当前类型为int,内容为:%s\n", v)case bool:// %v可以自动推到输出类型fmt.Printf("当前类型为int,内容为:%v\n", v)default:fmt.Printf("不是合理的数据类型")}}
}

运行结果:

当前类型为int,内容为:1
当前类型为int,内容为:面朝大海 春暖花开
当前类型为int,内容为:true

总结

本篇文章主要为Go语言 接口定义、示例、类型断言及常用场景。


http://www.mrgr.cn/news/603.html

相关文章:

  • 【Kubernetes】k8s集群存储卷(pvc存储卷)
  • 使用Visual Studio扩展(XAML Styler for Visual Studio 2022)格式化xaml、axaml文件
  • 云服务器Docker内部署服务后,端口无法访问?
  • 【PGCCC】使用 Postgres 递归 CTE 进行图形检索
  • oracle to_char 截取创建时间 到月 分组查询 每月数量
  • 首站,北京!OpenCSG邀您共赴AI之约【2024戴尔科技峰会预告】
  • 前端图片压缩compressorjs
  • Python编码系列—Python数据可视化:Matplotlib与Seaborn的实战应用
  • 链表(linked_list)的理解以及实现
  • HTML5+JavaScript绘制彩虹和云朵
  • 记录win10下 yolov8 tensorrt模型部署
  • 【关于电商测试】接口测试笔记经验分享
  • SuperMap GIS基础产品FAQ集锦(20240812)
  • 从快到慢学习Git指令
  • 【vue讲解:ref属性、动态组件、插槽、vue-cli创建项目、vue项目目录介绍、vue项目开发规范、es6导入导出语法】
  • 【人工智能】使用NLP进行语音到文本的转换和主题的提取项目实践及案例分析一
  • java栈的实现和应用(前中后缀表达式)
  • 【数据结构】二叉树(二)遍历
  • Go语言两个主要缺点
  • 免费Excel工作表同类数据合并工具