gpt4 book ai didi

go - 查找与字符串匹配的结构字段类型

转载 作者:行者123 更新时间:2023-12-01 22:12:59 25 4
gpt4 key购买 nike

这是代码:

type OrderSide string

const (
OrderSideSell OrderSide = "SELL"
OrderSideBuy OrderSide = "BUY"
)

type orderSides struct {
Sell OrderSide
Buy OrderSide
}

var (
OrderSides orderSides = orderSides{
Sell: OrderSideSell,
Buy: OrderSideBuy,
}
)

现在,我希望能够在 string和OrderSide(或者更好的是 OrderSides字段)之间进行转换。换句话说,给定一个包含 string"SELL""BUY",我如何返回相应的 OrderSide常量(或 OrderSides.<>字段)。

明确地说,这里的目标是动态地执行此操作,因此我无需在添加其他OrderSide字段时在其中添加案例的大型开关。

最佳答案

由于OrderSide只是字符串的别名,因此从字符串转换为OrderSide的最简单方法是:anOrderSide = OrderSide(aString)

这是创建OrderSides或从字符串变量(Go Playground)获取它们的方法的更长示例:

type OrderSide string

func main() {
var anOrderSide OrderSide
anOrderSide = "def"

fmt.Println(anOrderSide)
fmt.Println(reflect.TypeOf(anOrderSide))

var aString string
var anotherOrderSide OrderSide

aString = "abc"

anotherOrderSide = OrderSide(aString)

fmt.Println(aString)
fmt.Println(reflect.TypeOf(aString))
fmt.Println(anotherOrderSide)
fmt.Println(reflect.TypeOf(anotherOrderSide))
}

根据您的“枚举”,这不会检查您的字符串是否为有效的OrderSide。您将需要验证字符串是否在其他位置的有效OrderSides列表中。一种简单的方法是创建一个映射,其中键是OrderSides的所有有效字符串值,并且值是空struct:
validOrderSides := make(map[string]struct{})

validOrderSides["BUY"] = struct{}{}
validOrderSides["SELL"] = struct{}{}

然后,您可以只检查计划转换的字符串是否在 map 中: _, ok := validOrderSides["BUY"]

或者,如果愿意,可以将其设置为 map[string]OrderSide并从字符串转换为OrderSide并同时进行验证: orderSide, isValid := stringToOrderSide["BUY"]

关于go - 查找与字符串匹配的结构字段类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62420568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com