神奇的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的程序員們來說是多么讓人吃驚。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM