Go 語言程式:從雜湊集合獲取雜湊元素作為排序陣列
在 Go 語言中,我們可以使用迭代、sort 包以及切片函式從雜湊集合獲取雜湊元素作為排序陣列。
雜湊集合包含一個雜湊對映,用於以鍵值對的形式儲存專案。雜湊對映使用雜湊函式實現。
語法
func make ([] type, size, capacity)
Go 語言中的 make 函式用於建立陣列/對映,它接受要建立的變數型別、大小和容量作為引數。
func append(slice, element_1, element_2…, element_N) []T
append 函式用於向陣列切片新增值。它接受多個引數。第一個引數是要新增值的陣列,後跟要新增的值。然後,該函式返回包含所有值的最終陣列切片。
funcStrings(src []string) []string
strings 函式定義在 sort 包中。此函式接受要排序的字串格式的陣列,並透過對該陣列進行排序返回結果。
sort.Slice()
此函式是 sort 包的一部分。它用於對整數切片進行排序。它接受兩個引數:要排序的切片和一個返回布林值的函式。
func range(variable)
range 函式用於迭代任何資料型別。要使用它,我們首先必須編寫 range 關鍵字,後跟要迭代的資料型別,結果迴圈將迭代到變數的最後一個元素。
演算法
步驟 1 - 此程式匯入兩個包 fmt、main 和 sort 包,其中 fmt 幫助格式化輸入和輸出,main 幫助生成可執行程式碼。
步驟 2 - 建立一個 main 函式。
步驟 3 - 在 main 中,使用對映字面量建立雜湊對映,其鍵型別為字串,值型別為整數。
步驟 4 - 然後,使用 make 作為內建函式建立鍵切片,類似於雜湊對映的長度。
步驟 5 - 迭代雜湊對映並將它的鍵追加到切片中。
步驟 6 - 然後,使用 sort 包中的 Strings 函式對鍵切片進行排序。
步驟 7 - 在控制檯上列印排序後的切片。
步驟 8 - 列印語句使用 fmt 包中的 Println 函式執行,其中 ln 表示換行。
示例 1
在此示例中,我們將建立一個鍵型別為字串,值型別為整數的雜湊對映。然後,將建立與雜湊對映長度相似的鍵切片。迭代雜湊對映並將雜湊對映的鍵新增到鍵切片中。
package main import ( "fmt" "sort" ) func main() { hashmap := map[string]int{ "noodles": 110, "momos": 80, "pizza": 190, "burger": 50, } keys := make([]string, 0, len(hashmap)) for k := range hashmap { keys = append(keys, k) } sort.Strings(keys) fmt.Println("The sorted array is given as:") fmt.Println(keys) }
輸出
The sorted array is given as: [burger momos noodles pizza]
示例 2
在此示例中,將使用對映字面量建立雜湊對映。使用 sort 包中的 Strings 函式對切片中的鍵進行排序。最後,在終端上列印排序後的陣列。
package main import ( "fmt" "sort" ) func main() { hashmap := map[string]int{ "noodles": 110, "momos": 60, "pizza": 250, "pasta": 80, } keys := make([]string, len(hashmap)) i := 0 for k := range hashmap { keys[i] = k i++ } sort.Strings(keys) //sort the array fmt.Println("The sorted array is given as:") fmt.Println(keys) }
輸出
The sorted array is given as: [momos noodles pasta pizza]
示例 3
在此示例中,我們將建立一個雜湊對映,並將使用 sort 包中的 Slice 函式對新切片中的鍵進行排序。排序後的陣列將在控制檯上列印。
package main import ( "fmt" "sort" ) func main() { hashmap := map[string]int{ "noodles": 110, "pasta": 60, "pizza": 290, "momos": 40, } keys := make([]string, 0, len(hashmap)) for k := range hashmap { keys = append(keys, k) } sort.Slice(keys, func(i, j int) bool { return keys[i] < keys[j] }) fmt.Println("The sorted array is given as:") fmt.Println(keys) }
輸出
The sorted array is given as: [momos noodles pasta pizza]
結論
我們編譯並執行了獲取雜湊元素作為排序陣列的程式。在第一個示例中,我們將使用 sort 包中的 Strings 函式,在第二個示例中,我們將使用迴圈中的索引變數以及類似的 Strings 函式,在第三個示例中,我們將使用 sort 包中的 Slice 函式。所有示例都返回排序後的陣列。