2016-12-11 11 views
0

의 슬라이스가 나는 구조체 golang은 빈 인터페이스

type container struct{ 
    Data []interface{} 
} 

를 정의하고 데이터 유형의 모든 다른 종류의 조각을 할당 기대했다 초기화합니다. 예를 들어

ints := []int{2,3,4} 
tmp := a{ints} 

그러나, 컴파일러는 불평 :

가 어떻게 정의해야 필드 값의 형식 [] 인터페이스 {}로 ([] int 형)의 int를 사용할 수 없다 컨테이너 구조체? 또는 과제가 다르게 수행되어야합니까?

완전한 예는 개별 구조체 개별 인터페이스를 구현할지라도, here

+3

은 [자주 묻는 질문]를 참조하십시오 (https://golang.org/doc/faq#convert_slice_of_interface). 가능한 dup : http://stackoverflow.com/questions/12990338/cannot-convert-string-to-interface –

답변

3

문제가 구조체 배열 인터페이스의 배열로서 이용 될 수 있다는 발견 될 수있다. 당신과 같이 직접 각 요소를 추가해야합니다 :

package main 

import (
    "fmt" 
) 
type a struct{ 
    Data []interface{} 
} 
func main() { 
    ints := []int{2,3,4} 
    tmp := a{} 
    for _, v := range ints { 
     tmp.Data = append(tmp.Data, v) 
    } 
    fmt.Println(ints, tmp) // [2 3 4] {[2 3 4]} 
} 
관련 문제