1.空接口作为函数参数

使用空接口实现可以接收任意类型的函数参数。

package mian//golang中空接口可以当作类型使用,表示任何类型
func show(a interface{}) {fmt.printf("值: %v 类型: %T\n", a, a)
}func main() {show(20)    //type: intshow("hello golang")    //type: stringslice := []int{1, 2, 5, 100}    //type: 切片show(slice)
}

2.类型断言

一个接口的值(简称接口值)是由一个具体类型和具体类型的值两部分组成。这两部分分别称为接口的动态类型和动态值。

如果我们想要判断空接口中值的类型,那么这个时候就可以使用类型断言,其语法格式:

x.(T)
  • x:表示类型为interface{}的变量
  • T:表示断言x可能的类型。

该语法返回两个参数,第一个参数是x转化为T类型后的变量,第二个值是一个布尔值,若为true则表示断言成功,为false则表示断言失败。

package main import "fmt"func main() {var a interface{}a = "hello golang"v, ok := a.(string)if ok {fmt.Println("a就是一个string类型,值为:",v)} else {fmt.Println("断言失败")}
}

注意:x.(Type)只能用在switch中