为了账号安全,请及时绑定邮箱和手机立即绑定

结构片无法插入golang中的接口片

结构片无法插入golang中的接口片

Go
ITMISS 2023-05-08 15:30:13
我有如下示例所示的Tag结构和接口。TableAbstruct[标签结构]type Tag struct {    Id   int    `db:"id"`    Name string `db:"Name"`}func (tag Tag) Serialize() []string {    ...}[TableAbstruct 接口]type TableAbstruct interface {    Serialize() []string}Xxx()函数返回[]TableAbstruct,但实际类型是[]Tag。下面的程序将运行良好,因为Tag包含TableAbstruct接口。func Xxx() []TableAbstruct {    result := []TableAbstruct{}    for i := 0; i < 10; i++ {        table_obj := Tag{}        result = append(result, table_obj)    }    return result}但我想像下面这样写,但我不能。我认为问题是TypeError。但是我不明白为什么会发生错误。func Xxx() []TableAbstruct {    result := []Tag{}    return result}
查看完整描述

1 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

Go 对切片和类型没有任何幻想。简而言之,如果您说要返回[]TableAbstruct,则必须准确返回。所以如果你想返回 a []Tag,你必须创建一个切片[]TableAbstruct然后手动填充它:


func Xxx() []TableAbstruct {

  var returnValue []TableAbstruct

  for _, t := range result {

    returnValue = append(returnValue, t)

  }

  return returnValue

}


查看完整回答
反对 回复 2023-05-08
  • 1 回答
  • 0 关注
  • 116 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信