如何将别名类型(常量)连接到 strings.Join()

我有一个包/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 个选项。但是,我仍然觉得应该有一种可转换的方式来做到这一点。


慕雪6442864
浏览 157回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go