go - 如何将接口切片更改为结构切片
问题描述
如何将接口切片设置为结构切片?
我定义接口
type IFoo interface{
//something methods
}
我定义结构
type Foo struct{
Id int `json:"Id"`
//somethig fields
}
我创建了结构工厂,我想将 IFoo 切片更改为具体结构类型的切片
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 我会得到预期的结果,但我不能使用具体的结构类型作为抽象。
怎么做?感谢和抱歉我的英语不好。
解决方案
推荐阅读
- powerbi - 未过滤上个月结果的切片器中的 SELECTED 值
- java - 有没有办法获取图像视图资源并上传到数据库 sql 数据库?
- rust - 在测试期间忽略部分功能
- c++ - 如何以使用最少存储的方式将 Huffman 表保存在文件中?
- javascript - 将信息从模态提交到 mySQL
- list - 我需要帮助来了解查找列表深度的 lisp 程序
- java - 在 Java 中编写 Rectangle 类的子类的问题
- php - 在 PhpStorm 中通过 WSL 连接到 PostgreSQL
- c++ - ESP32 作为 BLE 服务器,无法配对循环计算机
- python - 如何使用 tkinter 隐藏和显示按钮?