zoukankan      html  css  js  c++  java
  • 神奇的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的程序员们来说是多么让人吃惊。
  • 相关阅读:
    如何创建支持Eclipse IDE的Maven项目
    使用Nexus搭建Maven私服
    Maven找不到java编译器的问题
    关于java -version版本问题
    win7右下角声音图标不见的解决方法
    如何用Maven创建一个普通Java项目
    如何手动把jar包添加进Maven本地仓库
    Maven是如何工作的
    Maven远程仓库
    canvas+js实现时钟效果图
  • 原文地址:https://www.cnblogs.com/chase-wind/p/6094378.html
Copyright © 2011-2022 走看看