登录
首页 >  Golang >  Go问答

如何将接口切片更改为结构切片

来源:stackoverflow

时间:2024-04-02 08:48:32 463浏览 收藏

学习Golang要努力,但是不要急!今天的这篇文章《如何将接口切片更改为结构切片》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

问题内容

如何将接口切片设置为结构切片?

我定义接口

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)
}

我得到[地图[id:1]地图[id:2]] 但我想得到 [{1} {2}]

如果我将 var o 定义为 []foo 我会得到预期的结果,但我不能使用具体的结构类型作为抽象。

怎么办?谢谢,抱歉我的英语不好。


解决方案


我找到了解决方案

https://play.golang.org/p/syNVY0KTtM2

谢谢大家的帮助

今天关于《如何将接口切片更改为结构切片》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>