golang中怎么断言接口slice为具体实现slice?

比如下面的代码:

type People interface {
    GetName() string
}

type Man struct {
    Name string
}

func (m *Man) GetName() string {
    return m.Name
}

var p People
if man,ok := p.(*Man);ok{
...
}

如果明确[]People切片中都是Man类型,有什么办法将[]People断言为[]Man?还是说,只能循环后进行断言?

阅读 4.1k
3 个回答

把 []People marshal 成 []byte 再 unmarshal 到 []Man (

最简单的方式,直接循环吧。

因为 []People 是一个 slice, 切片并不是 interface{} 所以你不能直接对一个切片断言。

循环就是最简单的。

对,只能通过循环断言slice中的每一个元素实现

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏