首頁 > 後端開發 > Golang > map的用法 golang

map的用法 golang

王林
發布: 2023-05-10 19:46:05
原創
659 人瀏覽過

Golang 是一門十分強大的程式語言,其效率高且語法簡潔易學。當談到 Go 的好處時,其中一個主要的原因是類似於 map 這樣的內建的資料結構。在本文中,我們將深入了解 Go map 的用法。

Go map 是一種無序的鍵值對集合,這意味著您可以使用任何類型的值作為鍵和值。 map 內的鍵值對不會以任何特定的順序存儲,而是按其哈希值的順序存儲。對於這個特性,我們將在後面進一步討論。

建立一個 Map

要在 Go 中建立一個 map,您需要使用內建函數 make()。讓我們看看如何建立一個 map,並在其中添加鍵值對。

m := make(map[string]int) // 创建一个字符串为键,int 类型为值的 map
m["foo"] = 42             // 向 map 中添加键为 "foo" 的值为 42
fmt.Println(m["foo"])     // 输出 map 中键为 "foo" 的值,输出 42
登入後複製

在此範例中,我們建立了一個字串為鍵、int 類型為值的 map,然後我們向其中新增了鍵為 "foo" 的值為 42。最後一行程式碼輸出 map 中鍵為 "foo" 的值,因此我們得到了 42 的輸出。

還有一種另類的方法,可以在建立 map 時指定初始值。您可以按照下面的方式嘗試它:

m := map[string]int {
    "foo": 42,
    "bar": 24,
}
登入後複製

在這個範例中,我們建立了一個具有兩個鍵值對的map,其中鍵「foo」 的值為42,鍵「bar」 的值為24。

存取一個Map 中的值

要存取Go 中map 的值,您可以使用以下方式:

val, ok := m["foo"]
fmt.Println(val, ok)     // 输出 42, true
登入後複製

這裡val 變數儲存map 中鍵為"foo"的值,而ok 變數表示map 中是否存在鍵為"foo" 的條目。

如果 map 中沒有這樣的條目(也就是說,"foo" 不是鍵),那麼 ok 變數將是 false。因此,如果您想檢查是否成功存取了 map 中的值,可以檢查 ok 變數的值。

迭代 Map 中的值

在 Go 中迭代 map 的值很簡單,您可以使用 for-range 循環。

m := map[string]int {
    "foo": 42,
    "bar": 24,
}

for k, v := range m {
    fmt.Printf("key: %s, value: %d
", k, v)
}

// 输出:
// key: foo, value: 42
// key: bar, value: 24
登入後複製

在這個範例中,我們使用 for-range 迴圈來迭代 map m 中的鍵和值,並在每個迭代中輸出它們。請注意,for 循環的語法不僅會迭代 map 的鍵,還會迭代 map 中的值。

刪除 Map 中的值

刪除 Go map 中的值也很簡單,您只需要使用 delete() 函數。

m := map[string]int {
    "foo": 42,
    "bar": 24,
}

delete(m, "foo") // 删除 map 中键为 "foo" 的键值对
登入後複製

在這個範例中,我們使用 delete() 函數刪除了 map 中鍵為 "foo" 的鍵值對。刪除之後,map 將不再包含鍵為 "foo" 的項目。

Map 的大小和容量

在 Go 中,map 有大小和容量的屬性。但是,與其他語言的資料結構不同,Go 中的 map 沒有明確的容量屬性。因此,如果您想了解map 的大小,您需要使用內建函數len(),如下所示:

m := map[string]int {
    "foo": 42,
    "bar": 24,
}

fmt.Println(len(m)) // 输出长度为 2
登入後複製

#在這裡,我們使用len() 函數輸出map m 的長度,它的輸出是2 。

Map 的效能和用法建議

map 是一個非常強大的資料結構,但需要使用時要謹慎。由於 map 是一個動態的哈希表,所以許多開發人員認為它比其他資料結構要快。但是,在實際使用中,map 的效能可能受到記憶體管理和哈希衝突的影響,從而導致程式碼變慢。

以下是一些關於 Go map 使用的建議:

  • 避免在 map 中加入過多的鍵值對。過多的鍵值對會導致更多的哈希衝突。
  • 對於需要處理大型 map 的情況,建議使用並發安全的 sync.Map 類型。
  • 在以效能為導向時,應考慮使用陣列、切片或其他資料結構。

儘管如此,map 是一種非常方便且靈活的資料結構。如果您以合理的方式使用它,它將成為您在 Go 程式碼中的理想選擇。

總結

在本文中,我們已經了解了 Golang 中 map 的用法。我們已經學習如何建立、存取、迭代、刪除 map 中的條目,以及如何查看 map 的大小和容量。同時,我們也提供了一些有關 map 使用的建議,希望可以幫助您在 Go 中更好地使用該資料結構。

以上是map的用法 golang的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板