Как установить фрагмент интерфейса на фрагмент структуры?
Я определяю интерфейс
type IFoo interface{
//something methods
}
Я определяю struct
type Foo struct{
Id int `json:"Id"`
//somethig fields
}
Я создаю фабрику структур и хочу изменить IFoo slice на кусочек конкретного типа структуры
func FooFactory (p *[]IFoo) {
*p = *(*[]IFoo)(unsafe.Pointer(&[]Foo{})
//here I try something like unsafe.Pointer, reflect.SliceHeader but nothing does not works
}
и затем я хочу использовать результат для Unmarshal json:
func main() {
var o []IFoo
FooFactory(&o)
j := []byte(`[{"Id":1}, {"Id":2}]`)
json.Unmarshal (j, &o)
fmt.Println(o)
}
Я получаю [map [Id: 1] map [Id: 2]], но я хочу получить [{1} {2}]
Если я определяю var o как [] Foo, я получаю ожидаемый результат, но не могу использовать конкретный тип структуры в качестве абстракции.
Как это сделать? Спасибо и извините за мой плохой английский.