2016-10-20 3 views
0

strSlice 유형에 대한 사용자 정의 yaml 파서를 구현했기 때문에 []string에 대한 특정 유형을 정의하도록 제한되었습니다.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) 작업을 숨기고 싶지 않기 때문에 단일 작업에서이 작업을 수행 할 수 없습니다.