我被限制为[]string
定义一个特定的类型,因为我为strSlice类型实现了一个自定义的yaml解析器。
现在我需要将[]strSlice
强制转换回[][]string
,但是go编译器1.7.1将其拒绝为错误。
type strSlice []string
var x1 []strSlice
var x2 [][]string
...
x2 = [][]string(x1)
如何执行演员表演?
答案 0 :(得分:2)
您正在使用字符串切片的命名类型。您需要先将x1
中的每个条目转换回[]string
:
type strSlice []string
var x1 []strSlice
var x2 [][]string
...
for _, s := range x1 {
x2 = append(x2, []string(s))
}
https://play.golang.org/p/5iJT2Hsv1R
不幸的是,一次性无法做到这一点,因为x1
中的每个索引都是strSlice
类型,需要转换为[]string
类型才能存储在x2
中。 Go不允许你在一次操作中执行此操作,因为开发人员不想隐藏O(n)操作的语法糖。