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
結論
我們使用兩種方法執行了根據字串值查詢列舉的程式。在第一個示例中,我們使用了字串表示;在第二個示例中,我們使用了包含字串和列舉欄位的結構體。
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP