神奇的GO语言:空接口(interface)
2016-11-23 17:08
766 查看
对于go语言来说,设计最精妙的应该是interface了,直白点说interface是一组method的组合。至于更加详细的描述,本文不做介绍,今天谈谈空接口。
空interface(interface{})不包含任何的method,因此所有的类型都实现了空interface。空interface在我们需要存储任意类型的数值的时候相当有用,有点类似于C语言的void*类型。请看下面的代码:
空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的程序员们来说是多么让人吃惊。
相关文章推荐
- go语言之行--接口(interface)、反射(reflect)详解
- Go语言接口interface
- go语言中的接口interface
- Go语言_类型转换_interface与强类型(int,string...)转换
- go语言 interface 初探
- go语言接口查询
- Go语言学习笔记(六)-方法和接口
- MIDL全称Microsoft Interface Definition Language,即接口定义语言
- Go语言:通过组合获得接口
- Go语言中的interface理解
- GO语言(六)接口使用
- go语言接口
- go语言接口用法实例分析
- 39.笔记go语言——接口
- Thrift 接口定义语言(interface description language)参考手册
- Go语言排序与接口实例分析
- Go语言 6 结构体、方法和接口
- Go语言学习笔记---接口
- go语言中的interface使用实例
- Android Interface Definition Language (AIDL) 接口描述语言