<分区>
我对 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: first argument to append must be slice; have interface {} prog.go:15:11: cannot use ReturnInt (type func() *int) as type GenericFunc in argument to Append
- 为什么
ReturnInt
不能是GenericFunc
类型?如果这不起作用,我根本不明白interface{}
是如何与函数一起使用的……可以吗? - 如何接受“通用” slice 并使用反射附加到它?这将涉及检查
GenericFunc
是否返回与 slice 相同的类型,但在此之后附加应该是可能的。