我是新来的go。我正在尝试编写一个通用的“ appender”函数。这是一种简化,但是它是尝试创建一个干净的接口来处理某些列表的尝试。具体来说,我对由此产生的两个错误有疑问:
package main
type GenericFunc func() *interface{}
func Append(ints interface{}, f GenericFunc) {
ints = append(ints, f())
}
func ReturnInt() *int {
i := 1
return &i
}
func main() {
var ints []*int
Append(ints, ReturnInt)
}
操场
prog.go:5:18:要附加的第一个参数必须是slice;具有接口{} prog.go:15:11:不能在Append的参数中使用ReturnInt(类型func()* int)作为GenericFunc类型
为什么不能ReturnInt是类型GenericFunc?如果这不起作用,那么我根本不了解如何interface{}与函数一起使用..可以吗?
您如何接受“通用”切片并使用反射将其追加?这将涉及检查GenericFunc返回与切片相同的类型,但是之后应该可以追加。
沧海一幻觉
相关分类