久久久精品一区ed2k-女人被男人叉到高潮的视频-中文字幕乱码一区久久麻豆樱花-俄罗斯熟妇真实视频

Go語(yǔ)言之map練習(xí)-創(chuàng)新互聯(lián)

map理論基礎(chǔ)知識(shí)

  • 類(lèi)似其他語(yǔ)言中的哈希表或者字典,以key-value形式存儲(chǔ)數(shù)據(jù)
  • key必須是支持== 或者 != 比較運(yùn)算的類(lèi)型,不可以是函數(shù),map或者slice
  • map查找比線性搜索快很多,但比使用索引訪問(wèn)數(shù)據(jù)的類(lèi)型慢100倍
  • map使用make()創(chuàng)建,支持:=這種簡(jiǎn)寫(xiě)方式

    專(zhuān)注于為中小企業(yè)提供網(wǎng)站制作、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)巴彥免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了近千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
  • make([keyType]valueType, cap), cap表示容量,可省略
  • 超出容量時(shí)會(huì)自動(dòng)擴(kuò)容,但盡量提供一個(gè)合理的初始值
  • 使用len()獲取元素個(gè)數(shù)

  • 鍵值對(duì)不存在時(shí)自動(dòng)添加,使用delete()刪除某鍵值對(duì)
  • 使用for range 對(duì)map和slice進(jìn)行迭代操作

迭代時(shí),注意事項(xiàng)

Go語(yǔ)言之map練習(xí)


map的定義形式 大概有兩種

1、map[K]V
2、map[K1]map[K2]V   復(fù)合map,也就是說(shuō),值value也是map類(lèi)型

什么類(lèi)型,可以做為map的key?

  • map使用哈希表,必須可以比較相等
  • 除了sllice,map,function的內(nèi)建類(lèi)型都可以作為key
  • Struct類(lèi)型不包含上述字段,也可以作為key
//map 練習(xí)
package main

import (
    "fmt"
    "sort"
)

func main() {
    //============================方式一:===========================
    //創(chuàng)建一個(gè)空的map
    //先聲明一個(gè)map類(lèi)型
    var nodeMap map[int]string
    //初始化nodeMap, 全部為空
    nodeMap = map[int]string{}
    fmt.Println(nodeMap)

    fmt.Println("-----------------------------------------------")
    //============================方式二:===========利用make================
    var clusterMap map[int]string = make(map[int]string)
    fmt.Println(clusterMap)

    fmt.Println("-----------------------------------------------")
    //============================方式三:===========利用推斷功能================
    operatorMap := make(map[int]string)
    fmt.Println(operatorMap)

    //============================方式四:===========創(chuàng)建時(shí)直接初始化================
    //此種方式,不需要使用make
    operatorMap2 := map[int]string{3:"hello", 5:"world"}
    fmt.Println("===>:\t",operatorMap2)

    // ======初始化=====
    nodeMap[1] = "sparkNode"
    nodeMap[2] = "esNode"
    fmt.Println(nodeMap)

    //=======根據(jù)鍵 取出 元素
    nodeName := nodeMap[2]
    fmt.Println(nodeName)

    //======刪除鍵值對(duì)
    delete(nodeMap, 1) //根據(jù)鍵值對(duì),進(jìn)行刪除
    fmt.Println(nodeMap)

    fmt.Println("-----------------------------------------------")
    //--------------復(fù)雜map的操作-------------------
    //聲明一個(gè)map類(lèi)型
    var clusterAppTaskId map[string]map[string]string
    //初始化此map類(lèi)型
    clusterAppTaskId = make(map[string]map[string]string)

    taskId, ok := clusterAppTaskId["spark-beijing"]["/spark-beijing/app-uewqr"]

    if !ok {
        //每一級(jí)別的map都有進(jìn)行初始化,編譯時(shí)是找不到的,只有運(yùn)行時(shí),才能發(fā)現(xiàn)
        clusterAppTaskId["spark-beijing"] = make(map[string]string)
    }

    clusterAppTaskId["spark-beijing"]["/spark-beijing/app-uewqr"] = "app-ewr-spark-taskid-001"
    taskId, ok = clusterAppTaskId["spark-beijing"]["/spark-beijing/app-uewqr"]

    fmt.Println(taskId, ok)

    fmt.Println("-----------------------------------------------")
    //--------------迭代操作-------------------
    //for i, v := range slice {
    //
    //}
    //i, 表示下標(biāo),v表示對(duì)應(yīng)的值,是拷貝的值
    //要特別注意,對(duì)v的任何修改,都不影響原值,
    // map類(lèi)型也是,不會(huì)影響原值的

    //例如,下面的例子,就是對(duì)v的操作后,不會(huì)對(duì)sm產(chǎn)生影響的
    //因此,不建議使用這種方式
    sm := make([]map[int]string, 5)
    for _, v := range sm {
        v = make(map[int]string)
        v[1] = "ok"
        fmt.Println(v)
    }

    fmt.Println(sm)
    fmt.Println("-----------------------------------------------")
    //下面的修改,原值
    for i := range sm {
        sm[i] = make(map[int]string)
        sm[i][2] = "spark"
        fmt.Println(sm[i])
    }

    fmt.Println(sm)

    fmt.Println("-----------------------------------------------")
    //---------------------------------
    //map是無(wú)序的,如何按照鍵從小到大獲取map中的值
    //需要生成一個(gè)切片,來(lái)存儲(chǔ)map的鍵
    //將鍵按照從小到大排序,然后,再根據(jù)鍵去取值
    marathonApp := map[int]string{1: "spark", 3: "es", 8: "ftp", 7:"hadoop", 4: "k8s", 2: "docker"}
    len := len(marathonApp)
    //生成一個(gè)切片,來(lái)存儲(chǔ)鍵
    kSlice := make([]int, len)
    // 聲明一個(gè)計(jì)數(shù)器,用于初始化切片時(shí)使用
    var i int = 0
    for k, _ := range marathonApp {
        kSlice[i] = k
        i++
    }
    fmt.Println("鍵排序前:\t", kSlice)

    //切片是引用傳遞,因此,下面排序后,不需要返回值進(jìn)行接收
    sort.Ints(kSlice)
    fmt.Println("鍵排序后:\t", kSlice)

    fmt.Println("根據(jù)鍵按照從小到大,依次取出對(duì)應(yīng)的值")
    //下面,開(kāi)始迭代marathonApp,就可以按照鍵的從小到大,依次取出值了
    for _, v := range kSlice {
        //這里一定要注意,是用值,而不是 kSlice的下標(biāo)
        fmt.Println(marathonApp[v])
    }

}
測(cè)試某個(gè)值是否在map容器里呢?
//測(cè)試某個(gè)值是否在map里呢?
package main

import "fmt"

func main() {

    sparkClusterIdApp := map[string]string{"spark001":"marathon001","spark002":"marathon002"}

    clusterId001 := "spark003"

    _, ok := sparkClusterIdApp[clusterId001]

    if !ok {
        fmt.Println("clusterId: \t", clusterId001, "不再容器里")
    }

    clusterId002 := "spark001"

    if v,ok :=sparkClusterIdApp[clusterId002]; ok {
        fmt.Println("value:\t", v)
    } else {
        fmt.Println("value does not exist!")
    }

}

測(cè)試結(jié)果:

clusterId:    spark003 不再容器里
value:   marathon001

Process finished with exit code 0

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。

當(dāng)前名稱(chēng):Go語(yǔ)言之map練習(xí)-創(chuàng)新互聯(lián)
新聞來(lái)源:http://sd-ha.com/article8/shgip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、靜態(tài)網(wǎng)站標(biāo)簽優(yōu)化、網(wǎng)站排名網(wǎng)站導(dǎo)航、關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作