我有一个接受函数作为参数的函数:func send(n int, c func(x int) int) int { return c(n)}我有一个结构,上面定义了一个方法type data struct { value int}func (t *data) set(x int) { t.value = x}我想创建一个结构实例,并将set绑定到该实例的send方法作为第二个参数传递给函数,以value从send.这可能吗?https://play.golang.org/p/bv1JevQBcq
1 回答
慕妹3146593
TA贡献1820条经验 获得超9个赞
您可以使用方法值。这是类似于您的示例的内容:
package main
import "fmt"
func send(n int, c func(x int)) {
c(n)
}
type data struct {
value int
}
func (t *data) set(x int) {
t.value = x
}
func main() {
d := data{1}
fmt.Println(d)
send(2, d.set)
fmt.Println(d)
}
我无法使用问题中的类型,因为要发送的函数参数返回一个值而该方法没有。如果确实需要使用问题中的类型,请使用匿名函数使方法适应函数参数类型:
send(2, func(v int) int { d.set(v); return 0 })
- 1 回答
- 0 关注
- 178 浏览
添加回答
举报
0/150
提交
取消