第5課 Go的map

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
package mainimport (    "fmt")/*    map    -類似其他語言中的雜湊表或者字典,用key-value形式儲存資料    -Key必須是支援==或者!=比較運算的類型,不可以是函數,map或者slice    -Map尋找比線性搜尋快ihenduo,但比使用索引訪問資料的類型慢100倍    -Map使用make()建立,支援:=這種簡寫方式    -make([KeyType]valueType,cap),cap表示容量,可省略    -超出容量時會自動擴容,但盡量提供一個合理的初始值    -使用len()擷取元素個數    -索引值對不存在時自動添加,使用delete()刪除某索引值對    -使用for range對map和slice進行迭代操作*/func main() {    var m map[int]string    m = map[int]string{}    fmt.Println(m)    //完成了一個map的初始化    var n map[int]string    n = make(map[int]string)    fmt.Println(n)    //也可以用make來建立    p := make(map[int]string)    fmt.Println(p)    //也是可以的    fmt.Println("-----")    m[1] = "OK"    a := m[2]    fmt.Println(a) //輸出空    fmt.Println(m[1])    delete(m, 1)      //刪除    fmt.Println(m[1]) //刪除後輸出空    //簡單map的操作    fmt.Println("-----")}
package mainimport (    "fmt")func main() {    var m map[int]map[int]string     //這裡建立了兩層map    m = make(map[int]map[int]string) //這裡只初始化了一層map    a, ok := m[2][1] //只有一個傳回值的時候返回的是取到的值,第二個傳回值返回是否索引值對存在    if !ok {         //如果ok不存在,對map的第二層進行初始化        m[2] = make(map[int]string)    }    m[2][1] = "good"    a, ok = m[2][1]    fmt.Println(a, ok)    //複雜的map操作}

slice 下的 for-range

package mainimport (    "fmt")func main() {    for i, v := range slice {        //返回slice相對應的索引,i相當於計數器,v相當於slice所儲存的值,是拷貝,不會影響slice本身        //可以通過slice[i]對slice本身進行操作    }}

map下的for-range

package mainimport (    "fmt")func main() {    for k, v := range map {        //返回k,v索引值對(同樣是拷貝)        //當然可以對m[k]直接對map進行操作    }}

for-range為map初始化

package mainimport (    "fmt")func main() {    sm := make([]map[int]string, 5) //這是一個以map為元素的切片,初始化容量、元素為5    for _, v := range sm {        v = make(map[int]string, 1)        v[1] = "ok"        fmt.Println(v)    }    fmt.Println(sm)    /*        輸出結果        map[1:ok]        map[1:ok]        map[1:ok]        map[1:ok]        map[1:ok]        [map[] map[] map[] map[] map[]]        顯然v是拷貝的,無法對map本身進行操作        如果要對本身操作,需要做如下修改(利用i)    */    smm := make([]map[int]string, 5)    for i := range sm {        smm[i] = make(map[int]string, 1)        smm[i][1] = "ok"        fmt.Println(smm[i])    }    fmt.Println(smm)}

對map的間接排序

package mainimport (    "fmt"    "sort")func main() {    //對map的間接排序    m := map[int]string{1: "a", 2: "b", 3: "c", 4: "d", 5: "e"}    s := make([]int, len(m))    i := 0    for k, _ := range m {        s[i] = k        i++    } //已經將map存入slice中    fmt.Println(s) //每次列印發現不同,體現map的無序性    sort.Ints(s)   //對slice排序    fmt.Println(s) //每次列印出來的是有序的    //我們只能實現對map的間接排序,因為map是無序的,我們只能提取後排序    fmt.Println(m)}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.