InterfaceSlice 가 오 용 된 경우
var dataSlice []int = foo()
var interfaceSlice []interface{
} = dataSlice
잘못 을 보고 하 다
cannot use dataSlice (type []int) as type []interface { } in assignment
원인 slice 는 컴 파일 할 때 메모리 레이아웃 을 확인 해 야 합 니 다.다음은 interface 의 바 텀 데이터 구조 로 int 형식 과 현저히 다 릅 니 다.
type = struct runtime.eface {
runtime._type *_type;
void *data;
}
이것 은 [] int 와 [] interface {} 메모리 레이아웃 의 차 이 를 초래 하여 위의 dataSlice 가 interface Slice 에 값 을 부여 할 수 없습니다.
올 바른 방법
var dataSlice []int = foo()
var interfaceSlice []interface{
} = make([]interface{
}, len(dataSlice))
for i, d := range dataSlice {
interfaceSlice[i] = d
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.