Так как OrderSide - это просто псевдоним для строки, самый простой способ преобразовать строку в OrderSide: anOrderSide = OrderSide(aString)
.
Вот более длинный пример способов создания OrderSides или получения их из строковых переменных ( Go Площадка ):
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, а значениями - пустой структурой:
validOrderSides := make(map[string]struct{})
validOrderSides["BUY"] = struct{}{}
validOrderSides["SELL"] = struct{}{}
Затем вы можете просто проверить, находится ли строка, которую вы планируете преобразовать, в карта: _, ok := validOrderSides["BUY"]
.
Или, если хотите, вы можете сделать это map[string]OrderSide
и преобразовать из строки в OrderSide и одновременно проверить: orderSide, isValid := stringToOrderSide["BUY"]
.