6.11. 第9节:空接口

未匹配的标注
本文档最新版为 2023,旧版本可能放弃维护,推荐阅读最新版!

空接口

空接口(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])
    }
}

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~