【发布时间】:2019-11-03 09:17:47
【问题描述】:
我有一个实现 stringer 接口的类型
// RowID stores the ID of a single row in a table
type RowID []string
// String implements Stringer interface for RowID
func (r RowID) String() string {
return fmt.Sprintf("[%s]", strings.Join(r, ", "))
}
我有一个函数,我想将这种类型的切片(或任何其他实现 Stringer 接口的类型)传递给。
// PrintChanges ...
func PrintChanges(ids []fmt.Stringer) {
for _, id := range ids {
fmt.Println(id)
}
}
但是,go 编译器给了我一个错误:
cannot use rowIDs (type []RowID) as type []fmt.Stringer in argument to PrintChanges
我可以将 RowID 传递给接受单个 fmt.Stringer 的函数
func PrintChange(id fmt.Stringer) {
fmt.Println(id)
}
...
PrintChange(RowID{"1", "24"})
但由于某种原因,我无法将 RowID 切片传递给接受 fmt.Stringer 切片的函数。我错过了什么?
【问题讨论】:
标签: go