Golang 是一門十分強大的程式語言,其效率高且語法簡潔易學。當談到 Go 的好處時,其中一個主要的原因是類似於 map 這樣的內建的資料結構。在本文中,我們將深入了解 Go map 的用法。
Go 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。
要存取Go 中map 的值,您可以使用以下方式:
val, ok := m["foo"] fmt.Println(val, ok) // 输出 42, true
這裡val 變數儲存map 中鍵為"foo"的值,而ok 變數表示map 中是否存在鍵為"foo" 的條目。
如果 map 中沒有這樣的條目(也就是說,"foo" 不是鍵),那麼 ok 變數將是 false。因此,如果您想檢查是否成功存取了 map 中的值,可以檢查 ok 變數的值。
在 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 中的值。
刪除 Go map 中的值也很簡單,您只需要使用 delete() 函數。
m := map[string]int { "foo": 42, "bar": 24, } delete(m, "foo") // 删除 map 中键为 "foo" 的键值对
在這個範例中,我們使用 delete() 函數刪除了 map 中鍵為 "foo" 的鍵值對。刪除之後,map 將不再包含鍵為 "foo" 的項目。
在 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 的效能可能受到記憶體管理和哈希衝突的影響,從而導致程式碼變慢。
以下是一些關於 Go map 使用的建議:
儘管如此,map 是一種非常方便且靈活的資料結構。如果您以合理的方式使用它,它將成為您在 Go 程式碼中的理想選擇。
在本文中,我們已經了解了 Golang 中 map 的用法。我們已經學習如何建立、存取、迭代、刪除 map 中的條目,以及如何查看 map 的大小和容量。同時,我們也提供了一些有關 map 使用的建議,希望可以幫助您在 Go 中更好地使用該資料結構。
以上是map的用法 golang的詳細內容。更多資訊請關注PHP中文網其他相關文章!