Go가 암시 적으로 변환 []T
할 []interface{}
때 암시 적으로 변환하지 않는 이유가 궁금 T
합니다 interface{}
. 누락 된이 전환에 대해 사소한 것이 있습니까?
예:
func foo([]interface{}) { /* do something */ }
func main() {
var a []string = []string{"hello", "world"}
foo(a)
}
go build
불평하다
함수 인수에서 (] [type]을 (를) 유형 [] 인터페이스 {}로 사용할 수 없습니다.
그리고 명시 적으로하려고하면 동일한 일이 b := []interface{}(a)
불평합니다.
(유형 [] 문자열)을 유형 [] 인터페이스 {} (으)로 변환 할 수 없습니다
그래서이 변환을해야 할 때마다 (많은 것으로 보입니다), 나는 다음과 같은 일을하고 있습니다 :
b = make([]interface{}, len(a), len(a))
for i := range a {
b[i] = a[i]
}
이 작업을 수행하는 더 좋은 방법이나 이러한 변환에 도움이되는 표준 라이브러리 기능이 있습니까? 정수 또는 문자열 목록을 가져올 수있는 함수를 호출 할 때마다 4 개의 추가 코드 줄을 작성하는 것은 어리석은 것처럼 보입니다.