使用 Range 迭代 Golang 對映元素的程式


Golang 中的對映提供了一種方便的方式來儲存和訪問以鍵值對格式給定的資料。迭代對映允許我們處理每個鍵值對並在其上執行操作。在本文中,我們將探討使用 range 迭代對映元素的不同方法,包括使用 range 關鍵字、使用鍵和值切片以及使用 reflect 包。

語法

for key, value := range mapName {
    // Perform operations on key-value pair
}

此語法使用 range 關鍵字迭代對映 mapName 的元素。在每次迭代中,key 和 value 變數分別賦值給相應的鍵值對。你可以在迴圈內對鍵值對執行操作。

reflect.ValueOf(mapName)

使用此語法,我們檢索對映的 reflect.Value。

MapKeys() 

它返回一個包含所有鍵的切片。

MapIndex(key)

它允許獲取每個鍵對應的值。

Interface()

它用於將 reflect.Value 轉換為其實際值。

演算法

  • 使用 range 關鍵字迭代對映的元素。

  • 對於每次迭代,將鍵賦值給變數 'key',並將值賦值給變數 'value'。

  • 根據需要對鍵值對執行操作。

示例

在這個例子中,我們可以在迴圈內對鍵值對執行操作。讓我們考慮一個 studentScores 對映,它將學生姓名作為鍵,並將他們的相應分數作為值。我們將使用 range 關鍵字迭代此對映並列印每個學生的姓名和分數。

package main

import "fmt"

func main() {
    studentScores := map[string]int{
        "John":   85,
        "Alice":  90,
        "Bob":    75,
        "Sara":   95,
        "Michael": 80,
    }


    for name, score := range studentScores {
        fmt.Printf("Student: %s, Score: %d\n", name, score)
    }
}

輸出

Student: Alice, Score: 90
Student: Bob, Score: 75
Student: Sara, Score: 95
Student: Michael, Score: 80
Student: John, Score: 85

示例

在這個例子中,我們首先建立適當型別的切片 'keys' 和 'values',並將索引 'i' 初始化為 0。然後,我們迭代對映元素並將每個鍵和值賦值給索引 'i' 處的相應切片。讓我們考慮一個 fruitStock 對映,它將水果名稱作為鍵,並將它們的相應庫存數量作為值。我們將使用鍵和值切片方法迭代此對映並列印水果及其庫存數量。

package main

import "fmt"

func main() {
    fruitStock := map[string]int{
        "apple":   10,
        "banana":  20,
        "orange":  15,
        "mango":   8,
        "pineapple": 12,
    }

    keys := make([]string, len(fruitStock))
    values := make([]int, len(fruitStock))
    i := 0
    for fruit, stock := range fruitStock {
        keys[i] = fruit
        values[i] = stock
        i++
    }

    for i := 0; i < len(keys); i++ {
        fmt.Printf("Fruit: %s, Stock: %d\n", keys[i], values[i])
    }
}

輸出

Fruit: apple, Stock: 10
Fruit: banana, Stock: 20
Fruit: orange, Stock: 15
Fruit: mango, Stock: 8
Fruit: pineapple, Stock: 12

示例

在這個例子中,我們將使用 reflect 包來獲取對映的“reflect.Value”。然後,我們使用 'mapValue.MapKeys()' 檢索鍵,並使用 range 關鍵字迭代它們。讓我們考慮一個“employeeSalaries”對映,它將員工姓名作為鍵,並將他們的相應工資作為值。我們將使用 reflect 包方法迭代此對映並列印每個員工的姓名和工資。

package main

import (
    "fmt"
    "reflect"
)

func main() {
    employeeSalaries := map[string]int{
        "John":    50000,
        "Alice":   60000,
        "Bob":     55000,
        "Sara":    65000,
        "Michael": 70000,
    }

    mapValue := reflect.ValueOf(employeeSalaries)
    mapKeys := mapValue.MapKeys()

    for _, key := range mapKeys {
        value := mapValue.MapIndex(key).Interface()
        fmt.Printf("Employee: %s, Salary: %d\n", key.String(), value.(int))
    }
}

輸出

Employee: John, Salary: 50000
Employee: Alice, Salary: 60000
Employee: Bob, Salary: 55000
Employee: Sara, Salary: 65000
Employee: Michael, Salary: 70000

現實生活中的應用

員工工資處理

假設您正在為公司開發工資處理系統。您有一個對映,其中包含員工姓名作為鍵,以及他們相應的工資作為值。您需要根據員工的工資計算獎金。

透過使用 range 關鍵字迭代對映,您可以有效地計算並將獎金應用於每個員工的工資。這使您可以準確地處理工資資料並調整各個員工的薪酬。

電子商務訂單跟蹤

假設您正在為電子商務平臺開發訂單跟蹤系統。您有一個對映,它儲存訂單 ID 作為鍵,以及它們的相應交付狀態作為值。您需要在訂單發貨和送達時更新每個訂單的交付狀態。

使用 range 關鍵字迭代對映元素使您可以快速更新每個訂單的交付狀態。隨著新訂單的處理和發貨,您可以輕鬆地將它們的狀體標記為“已發貨”和“已送達”,而不會影響其他訂單的狀態。

結論

在本文中,我們瞭解瞭如何在 Go 語言中使用 range 迭代對映元素。這裡我們使用了三種方法。range 關鍵字提供了一種簡單而簡潔的方法來迭代對映。使用鍵和值切片允許更靈活地分別處理鍵和值。reflect 包提供了一種動態的方法來迭代對映元素,儘管它可能有一些效能影響。

更新於:2023年9月7日

瀏覽量:511

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告