go中的2D切片类型转换

时间:2016-10-20 14:34:11

标签: go casting

我被限制为[]string定义一个特定的类型,因为我为strSlice类型实现了一个自定义的yaml解析器。

现在我需要将[]strSlice强制转换回[][]string,但是go编译器1.7.1将其拒绝为错误。

type strSlice []string
var x1 []strSlice
var x2 [][]string
...
x2 = [][]string(x1)

如何执行演员表演?

1 个答案:

答案 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)操作的语法糖。