Go語言程式:根據字串值查詢列舉


在 Go 語言中,根據給定的字串查詢與之對應的列舉常量是必要的。可以使用 switch 語句或一系列 if-else 語句來實現。另一種方法是使用 map,列舉常量作為值,字串值作為鍵。這樣就可以快速有效地根據其字串形式查詢列舉常量。讓我們透過不同的示例來學習如何在 Go 程式語言中根據字串值查詢列舉。

方法一:使用字串表示

在這個例子中,我們將看到如何使用字串表示來根據字串值查詢列舉。const 關鍵字用於定義 Cloth 型別為一個列舉,包含 Saree、Kurti 和 Shrug 值。然後在 map 中將這些服裝的字串表示與列舉值關聯起來。主函式搜尋 clothes map 中 "saree" 的列舉值並將其列印到終端。讓我們透過示例和演算法來了解其執行過程。

語法

Map[]

map 是 Go 語言中內建的資料結構,允許儲存和檢索鍵值對。map 的鍵必須是唯一的,而值可以是任何資料型別。map 使用雜湊表實現,可以高效地儲存和檢索資料。可以使用 [] 運算子新增、檢索和刪除項,並且可以使用 make() 函式和 map 關鍵字來建立它們。

演算法

  • 步驟 1 - 建立一個 main 包,並在程式中宣告 fmt(格式化包),其中 main 用於生成可執行的示例,fmt 用於格式化輸入和輸出。

  • 步驟 2 - 使用 const 關鍵字定義一個名為 Clothes 的新列舉型別。

  • 步驟 3 - 分別將整數 0、1 和 2 分配給列舉值 Saree、Kurti 和 Shrug。

  • 步驟 4 - 建立一個名為 clothes 的 map,將服裝的列舉值與其字串表示關聯起來。

  • 步驟 5 - 在主函式中使用 clothes map,根據其字串表示查詢特定服裝的列舉值。

  • 步驟 6 - 使用 fmt.Println() 函式(其中 ln 表示換行)將列舉值列印到控制檯。

示例

package main
import "fmt"

type Clothes int  //create type clothes

const (
   Saree Clothes = iota
   Kurti
   Shrug
)

var clothes = map[string]Clothes{   //create a map to link enumeration values with string representation
   "saree": Saree,
   "kurti": Kurti,
   "shrug": Shrug,
}

func main() {
   cloth := clothes["saree"]
   fmt.Println("The enum value of particular cloth is:")
   fmt.Println(cloth)  //print the enum value
}

輸出

The enum value of particular cloth is:
0

方法二:使用使用者自定義函式

此示例定義了一個名為 clothStruct 的結構體,其中包含 name 和 enum 欄位。將表示潛在服裝的元素定義為 clothStruct 的 clothList 陣列,以及它們的名稱和列舉值。此方法還允許根據需要擴充套件結構體的欄位或方法。

演算法

  • 步驟 1 - 建立一個 main 包,並在程式中宣告 fmt(格式化包),其中 main 用於生成可執行的示例,fmt 用於格式化輸入和輸出。

  • 步驟 2 - 使用 const 關鍵字建立一個新的 Cloth 列舉型別。

  • 步驟 3 - 將 Saree、Kurti 和 Shrug 定義為整數,並分別賦予 0、1 和 2 的值。

  • 步驟 4 - 建立一個名為 clothStruct 的結構體型別,其中包含 name 和 enum 欄位。

  • 步驟 5 - 建立一個名為 clothList 的 clothStruct 陣列,其中包含表示潛在服裝的元素及其名稱和列舉值。

  • 步驟 6 - 在主函式中遍歷 clothList 陣列,檢查結構體的 name 欄位是否與提供的 cloth 字串匹配。

  • 步驟 7 - 如果 name 欄位匹配,則列印列舉值並結束迴圈。

  • 步驟 8 - 如果輸入字串與任何列舉值都不匹配,則應始終考慮新增錯誤處理。

示例

在這個例子中,我們將看到如何使用使用者自定義函式根據字串值查詢列舉。

package main
import "fmt"
type Cloth int 

const (
   Saree Cloth = iota    //create cloth enumeration type
   Kurti
   Shrug
)

type clothStruct struct {
   name string
   enum Cloth
}

var clothList = []clothStruct{
   {name: "saree", enum: Saree},
   {name: "kurti", enum: Kurti},
   {name: "shrug", enum: Shrug},
}

func main() {
   cloth := "kurti"
   fmt.Println("The enum value of cloth is:")
   for _, v := range clothList {
      if v.name == cloth {
         fmt.Println(v.enum)   //print the required enum value
         break
      }
   }
}

輸出

The enum value of cloth is:
1

結論

我們使用兩種方法執行了根據字串值查詢列舉的程式。在第一個示例中,我們使用了字串表示;在第二個示例中,我們使用了包含字串和列舉欄位的結構體。

更新於:2023年2月20日

4K+ 瀏覽量

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.