2016-12-11 56 views
0

片我定義了一個結構golang初始化的空接口

type container struct{ 
    Data []interface{} 
} 

,並希望指定所有不同類型的數據類型的片吧。例如

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

然而,編譯器會抱怨:

不能在字段值中使用整數(類型[] INT)類型[]接口{}

如何應該定義容器結構?或者任務需要以不同的方式完成?

一個完整的例子可以發現here

+3

請參閱[常見問題](https://golang.org/doc/faq#convert_slice_of_interface)。可能的重複: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]} 
}