神奇的GO语言:空中接力口(interface)

  对于go语言来说,设计最精致的应有是interface了,直白点说interface是壹组method的结缘。至于尤其详细的叙说,本文不做牵线,明日谈论空切口。

  空interface(interface{})不含有别的的method,由此有着的品类都落实了空interface。空interface在大家必要仓库储存任意档次的数值的时候一定有用,有点类似于C语言的void*花色。请看上面包车型大巴代码:

package main

import (

    "fmt"

)

func main() {

    slice := make([]interface{}, 10)

    map1 := make(map[string]string)

    map2 := make(map[string]int)

    map2["TaskID"] = 1

    map1["Command"] = "ping"

    map3 := make(map[string]map[string]string)

    map3["mapvalue"] = map1

    slice[0] = map2

    slice[1] = map1

    slice[3] = map3

    fmt.Println(slice[0])

    fmt.Println(slice[1])

    fmt.Println(slice[3])

}
这段代码声明了一个空接口的slice,这意味着它的值可以是任意类型,然后我们声明了两个map,一个是map[string]string,一个是map[string]int,然后在声明一个map的map类型,将这三个类型赋值给slice,使得slice可以存贮各种不同类型的数据,想想看,一个可变数组中,存储了一个key为string类型,value为int类型的map,又存储了一个key为string类型,value为string类型的map,还存储了一个map的map,这对c/c++转go的程序员们来说是多么让人吃惊。