學習Golang語言(7):類型--字典

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

跟著碼術一起學習Golang語言。今天學習的是Go語言內建的資料結構:字典(map)。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

字典(Map)

字典(map)是Go語言內建的資料結構,一組索引值對的無序集合。

有些地方稱之為映射。本文中一律成為字典(map)。

字典(map)也叫做關聯陣列。因為數組通過索引來尋找元素,而字典通過鍵(key)來尋找元素。

字典(map)的容量只受到記憶體的限制。在一個字典中,所有的鍵都是唯一的,並且必須支援==和!=操作符的類型。如果試圖賦值給同一個鍵,後賦值的值將會覆蓋原有值。


map的建立和填充

map的定義有兩種:

1、初始化資料的定義方式。

2、使用make函數來定義。

輸出結果:

   Map literal at "one" is: 1

   Map created at "key2" is: 3.141590

   Map assigned at "two" is: 3

   Map literal at "ten" is: 0

其中mapLit使用方法一定義;而mapCreated使用方法二。

---------------------------------------------

map的使用過程中需要注意以下幾點:

1、map是無序的,每次列印出來的map都不會一樣,它不能夠通過index擷取,而必須通過key擷取;

2、map的長度不是固定的。和slice類似,map也是一種參考型別;

3、內建的len函數同樣適用於map,返回map擁有的key的數量;

4、map的值可以很方便的修改。


map的訪問

當訪問元素所對應的鍵存在於字典中,那麼肯定沒有問題,能夠獲得對應的元素。但是如果不存在呢?

這個時候會返回零值,對於字串的零值就是"",對於整數的零值就是0.

但是會存在這樣的情況:

這個時候會輸出:0。但是這個就與A索引值對應的值混淆了。Go提供一種方法來解決這個問題。

此時使用X["E"]有兩個傳回值。一個是值,一個是否存在該鍵的bool型變數。

也就是:

_, ok := map1[key1] // ok == true if key1 is present, false otherwise


map的刪除元素

Go語言提供了內建函數delete,這個函數可以用來從字典中刪除元素。

輸出結果:

刪除元素前map長度為4,刪除之後長度為3.<這裡使用len函數擷取map的長度>。

此外,如果你試圖刪掉一個不存在於map的鍵,程式不會報錯。只是不會對map有任何影響。


for...range結構

---------------------------------------------

for...range結構可以用於map。


for key, value := range map1 {

   //do something

}

第一傳回值為鍵(key),第二個傳回值為值(value)。這兩個值是僅僅作用於for迴圈內部的局部變數。例如:

輸出結果:


這裡我們同時能看出,map是無序的。

---------------------------------------------

如果你只關心值(value),可以這麼使用:

for _, value := range map1 {

//do something

}

輸出結果:

---------------------------------------------

如果你只關心鍵(key),可以這麼使用:

for key := range map1 {

   fmt.Printf(“key is: %d\n”, key)

}

輸出結果:

--------------------總結--------------------

到今天為止我們學習了go語言所有的內建類型。

包括:布爾型、數值型、字串、數組、slice和map。

---------------------------------------------

歡迎關注碼術!一起學習Golang語言。



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.