인터페이스 슬라이스에 구조체 슬라이스 할당
구조체 슬라이스([]MyStruct)를 인터페이스 슬라이스에 할당하려고 할 때( []인터페이스{}), 컴파일 시간 오류가 발생할 수 있습니다. 이는 구조체와 인터페이스의 메모리 표현이 다르기 때문입니다.
구조체의 필드는 메모리에 인접하게 저장되는 반면, 인터페이스는 유형 정보용과 실제 데이터용으로 하나씩 두 단어 쌍으로 저장됩니다. 이러한 차이로 인해 직접 할당이 불가능합니다.
가능한 해결 방법:
y := make([]interface{}, len(x)) for i, v := range x { y[i] = v }
type IMyStruct struct { MyStruct } func (i IMyStruct) Interface() interface{} { return i.MyStruct } x := []MyStruct{{5}, {6}} y := []interface{}{IMyStruct{x[0]}, IMyStruct{x[1]}}
var y interface{} y = x // No type conversion required
위 내용은 Go에서 구조체 조각을 인터페이스 조각에 어떻게 할당할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!