我有如下示例所示的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
}
- 1 回答
- 0 关注
- 116 浏览
添加回答
举报
0/150
提交
取消