我有一个包/API,允许传入一个值。例如:
type ConstType string
const (
T_Option1 ConstType = "OPTION-1"
T_Option2 ConstType = "OPTION-2"
T_Option3 ConstType = "OPTION-3"
)
注意这个类型是字符串的别名。
我遇到什么我认为是非惯用的步骤是我无法将这种类型别名的[]string切片强制转换或推断为切片。
type constTypes struct {
types []ConstType
}
func (s *constTypes) SetConstTypes(types []ConstType) {
s.types = types
}
func (s *constTypes) String() string {
// this generates a compile error because []ConstType is not
// and []string.
//
// but, as you can see, ConstType is of type string
//
return strings.Join(s.types, ",")
}
我把它放在操场上来展示一个完整的例子:
http://play.golang.org/p/QMZ9DR5TVR
我知道 Go 解决方案是将其强制转换为类型(显式类型转换,喜欢规则!)。我只是不知道如何将类型切片转换为 []string - 不循环遍历集合。
我喜欢 Go 的原因之一是强制类型转换,例如:
c := T_OPTION1
v := string(c)
fmt.Println(v)
播放:http : //play.golang.org/p/839Qp2jmIz
虽然,我不确定如何在不循环的情况下跨切片执行此操作。我必须循环吗?
鉴于,循环遍历集合并不是什么大问题,因为最多只能设置 5 到 7 个选项。但是,我仍然觉得应该有一种可转换的方式来做到这一点。
相关分类