通过xml.Unmarshal获得一个[]Province 然后想把它插到mongodb中,使用的是mgo driver。 那么怎样将[]Province切片转为[]interface{}切片呢?
法1.
c := session.DB(database).C("Provinces")
var provinces []Province
var docs []interface{}
...
for _,v := range provinces{
docs = append(docs,v)
}
c.Insert(docs...)
法2.
package main
import (
"fmt"
"reflect"
)
type a struct {
CreateTime int
Name string
Content string
}
func main() {
arr1 := []a{
a{Name: "no1", CreateTime: 1, Content: "hello1"},
a{Name: "no2", CreateTime: 2, Content: "hello2"},
a{Name: "no3", CreateTime: 3, Content: "hello3"},
a{Name: "no4", CreateTime: 4, Content: "hello3"},
}
fmt.Println(arr1)
arr2 := ToInterfaceArr(arr1)
fmt.Printf("%T\n", arr2)
fmt.Println(arr2)
}
func ToInterfaceArr(arr interface{}) []interface{} {
if reflect.TypeOf(arr).Kind() != reflect.Slice {
return nil
}
arrValue := reflect.ValueOf(arr)
retArr := make([]interface{}, arrValue.Len())
for k := 0; k < arrValue.Len(); k++ {
retArr[k] = arrValue.Index(k).Interface()
}
return retArr
}