2016-10-20 18 views
0

[]stringの特定の型を定義するためにstrSlice型用のカスタムyamlパーサを実装していたため、制約がありました。2Dスライスタイプの変換

今度は[]strSlice[][]stringにキャストする必要がありますが、goコンパイラ1.7.1はエラーとしてそれを拒否します。

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

どのようにキャスト操作を実行できますか?

答えて

2

名前付きの文字列スライスを使用しています。あなたは戻って[]string最初にx1内の各エントリを変換する必要があります。x1におけるインデックスのそれぞれがstrSliceタイプであるため、

type strSlice []string 
var x1 []strSlice 
var x2 [][]string 
... 
for _, s := range x1 { 
    x2 = append(x2, []string(s)) 
} 

https://play.golang.org/p/5iJT2Hsv1R

残念ながら、ワンショットでこれを行う方法はありません、 x2に格納するために[]stringタイプに変換する必要があります。 Goは、開発者が構文的な砂糖でO(n)操作を隠そうとしなかったので、これを1回の操作で行うことはできません。

関連する問題