当前位置: 首页 > 科技观察

一篇带你看懂Go语言基本接口的文章(下)

时间:2023-03-21 10:54:27 科技观察

前言大家好,我是码农,周五,我们上次讲的接口,我还没讲完呢,还有剩下的让我们来看看下面的一些吧!空接口的含义本文介绍存储接口。存储接口是我的名字。其实就是所谓的空接口。空接口的作用是存放任何数据。同样,空接口不定义任何方法,也就是说,任何接口都实现了空接口,所以空接口可以存储任何数据。空接口空接口示例代码packagemainimport"fmt"funcmain(){//变量直接赋值给空接口varxinterface{}x=1x=1.1x="666"x=[3]int{1,2,3}//Arrayx=[]int{6,23}//Slicex=map[string]string{"Name":"张三","Age":"666",}fmt.Println(x)//map中的值类型为空接口vary=map[string]interface{}{"Name":"张三","Age":18,}fmt.Println(y)执行结果空接口确实可以存储任何数据,并且可以直接使用。空接口在函数中的应用。不知道你有没有想过。如果函数的参数也是一个空接口,那你随便传值就可以了?我也用了一个grossstatictype,以后用emptyinterface。嗯。..这个就不多说了,以后再说。函数参数为空接口代码packagemainimport"fmt"funcsay(xinterface{}){fmt.Println(x)}funcmain(){say(1)say("666")say([]int{5,1,3})}上面说了,函数参数是一个空接口类类型,确实可以传任何数据。但是只有打印的时候,可以随便打印。假设我想对传入的值+1。funcsay(xinterface{}){fmt.Println(x)fmt.Println(x+1)}报错信息,所以空接口不是万能的。类型断言以上函数可以接受任意类型。但我有一个需要。如果输入是int类型,参数+100。如果输入是字符串类型,参数+“666”。如果传入其他类型,则返回不存在。我应该怎么办?这就需要断言的功能。断言语法空接口。(type)示例代码funcsay(xinterface{}){value,ok:=x.(int)ifok{//如果ok,则断言成功,为int类型fmt.Println(value+100)}value2,ok:=x.(string)ifok{//断言成功说明是字符串fmt.Println(value2+"666")}}如果类型比较多,断言比较麻烦,所以这个时候最好用switch。funcsay(xinterface{}){switchvalue:=x.(type){caseint:fmt.Println(value+10)casestring:fmt.Println(value+"666")default:fmt.Println("Nothing")}}//case可以继续写,可以写很多很多的执行结果。至此,Go语言的接口就全部讲解完了。接口主要分为行为接口和存储接口。行为接口主要用在面向对象方向,规定了父类必须有什么动作。空接口为了方便存值,可以存任何类型。