6.11. 第9节:空接口
空接口
空接口(interface{})不包含任何的方法,正因为如此,所有的类型都实现了空接口,因此空接口可以存储任意类型的数值。
当函数可以接受任意的对象实例时,我们会将其声明为interface{},最典型的例子是标准库fmt中PrintXXX系列的函数,例如:
func Printf(fmt string, args ...interface{})
func Println(args ...interface{})
如果自己定义函数,可以如下:
func Test(arg ...interface{}) {
}
Test( )函数可以接收任意个数,任意类型的参数。
package main
import "fmt"
func main0701() {
var i interface{}
//接口类型可以接收任意类型数据
//fmt.Printf("%T\n", i)
//i = 10
//fmt.Printf("%T\n", i)
//fmt.Println(i)
//i = 3.14
//fmt.Printf("%T\n", i)
//fmt.Println(i)
//i = "传智播客"
//fmt.Printf("%T\n", i)
//fmt.Println(i)
i = 10
//接口类型 不能直接进行转换需要使用类型断言
//var a int =20
//var a interface{}
//a = 20
fmt.Println(i)
}
func test() {
fmt.Println("test hello world")
}
func main0702() {
//空接口类型的切片
var i []interface{}
//fmt.Printf("%T\n",i)
i = append(i, 10, 3.14, "传智播客", test)
for idx := 0; idx < len(i); idx++ {
fmt.Println(i[idx])
}
}