使用結構體作為 map 鍵的 Go 語言程式


Go 是一種強大的程式語言,它提供了各種處理結構化資料的特性。其中一個特性就是能夠使用結構體作為 map 的鍵。在本文中,我們將探討如何編寫一個使用結構體作為 map 鍵的 Go 語言程式。

什麼是結構體?

在 Go 語言中,結構體是一種複合資料型別,它將零個或多個不同型別的多個值組合在一起。結構體用於建立更復雜的資料型別,可以表示各種物件。

結構體的定義使用 `type` 和 `struct` 關鍵字,後跟用大括號括起來的一組欄位。以下是一個 Go 語言中結構體定義的示例:

type Person struct {
   Name string
   Age int
}

在這個例子中,我們定義了一個名為 `Person` 的結構體,它有兩個欄位:`Name` 和 `Age`。`Name` 欄位是字串型別,`Age` 欄位是整數型別。

使用結構體作為 map 鍵

在 Go 語言中,map 用於將值與鍵關聯起來。map 的定義使用 `map` 關鍵字,後跟方括號中括起來的鍵的型別和值的型別。以下是一個 Go 語言中 map 定義的示例:

var myMap map[string]int

在這個例子中,我們定義了一個名為 `myMap` 的 map,它具有字串鍵和整數值。

要使用結構體作為 map 的鍵,我們需要確保該結構體是可比較的。如果結構體的所有欄位都是可比較的,則該結構體是可比較的。這意味著欄位必須是原始型別、具有可比較欄位的結構體型別或指向可比較型別的指標。

示例

以下是一個使用結構體作為 map 鍵的 Go 語言程式示例:

package main

import "fmt"

type Person struct {
   Name string
   Age int
}

func main() {
   personMap := make(map[Person]int)

   john := Person{"John", 25}
   jane := Person{"Jane", 30}

   personMap[john] = 100
   personMap[jane] = 200

   fmt.Println(personMap)
}

輸出

map[{Jane 30}:200 {John 25}:100]

在這個例子中,我們定義了一個名為 `Person` 的結構體,它有兩個欄位:`Name` 和 `Age`。然後,我們定義了一個名為 `personMap` 的 map,它具有 `Person` 鍵和整數值。

我們建立了 `Person` 結構體的兩個例項 `john` 和 `jane`,並設定了它們的 `Name` 和 `Age` 欄位。然後,我們使用 `make()` 函式建立一個空的 `personMap` map,並使用 `john` 和 `jane` 作為鍵,`100` 和 `200` 作為值,為其賦值。

最後,我們將 `personMap` map 的內容列印到控制檯。

結論

使用結構體作為 map 鍵是 Go 程式語言的一個強大特性。透過使用結構體作為鍵,您可以建立更復雜的資料結構,從而高效地儲存和檢索值。透過確保您的結構體是可比較的,您可以充分利用 Go map 的靈活性和強大功能。

更新於:2023年4月18日

5K+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告