
前言 Hey,篇文大家好呀,章带我是解G接口码农,星期八,上次咱们说的语言基接口呀,还是下篇没说完,还剩下了一些 下面就来看看叭!! 空接口含义 本篇介绍的篇文就是存储类接口,存储接是章带我的命名,其实人家就叫空接口。解G接口 空接口的语言基作用就是可以存储任何数据。 同理,下篇空接口没有定义任何方法,篇文也就是章带说任何接口都实现了空接口,所以空接口才能存任意数据。解G接口 空接口 空接口示例代码 package main import "fmt" func main() { //变量直接赋值为空接口 var x interface{} x = 1 x = 1.1 x = "666" x = [3]int{1,语言基 2,下篇 3} //数组 x = []int{6, 23} //切片 x = map[string]string{ "Name": "张三", "Age": "666", } fmt.Println(x) //map中value类型为空接口 var y = map[string]interface{}{ "Name":"张三", "Age":18, } fmt.Println(y) 执行结果  空接口确实是可以存储任何数据的,并且是高防服务器直接可以使用的。 空接口在函数中的应用 不知道你有没有想过,如果函数的参数,也是一个空接口,那不是就可以随便传值了吗? 我还用个毛静态类型,以后都用空接口得了,嗯。。。这个按下不表,等会说。 函数参数为空接口代码 package main import "fmt" func say(x interface{}) { fmt.Println(x) } func main() { say(1) say("666") say([]int{5, 1, 3}) } 确实是如上述所说,函数参数为空接口类类型,的确可以传任何数据。 但是仅限打印时可以随便打印。 假设我想让传入的值+1。 func say(x interface{}) { fmt.Println(x) fmt.Println(x+1) } 报错信息  所以说,空接口并不是万能的。 类型断言 上述函数虽然可以接收任意类型。 但是IT技术网我有个需求。 如果传入的是int类型,参数+100。 如果传入的是字符串类型,参数+"666"。 如果传入的是其他类型,返回不存在。 这该怎么办呢?这就要用到断言这个功能。 断言语法 空接口.(类型) 示例代码 func say(x interface{}) { value, ok := x.(int) if ok { //如果是ok表示断言成功,是int类型 fmt.Println(value + 100) } value2, ok := x.(string) if ok { //断言成功表示是字符串 fmt.Println(value2 + "666") } } 如果说有很多类型,断言起来比较麻烦,这时候用switch比较好。 func say(x interface{}) { switch value := x.(type) { case int: fmt.Println(value + 10) case string: fmt.Println(value + "666") default: fmt.Println("啥都不是") } } //case可以继续写,可以写很多很多 执行结果  总结 到此为止,Go语言的接口是全部都讲完了。 接口主要分为行为接口和存储接口。 行为接口主要用在面向对象这个方向,规定父类必须有哪些动作。 空接口时为了方便存值,可以存储任意类型。  WordPress模板 |