我有一个接受函数作为参数的函数:
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
字段1}}。
这可能吗?
答案 0 :(得分:1)
您可以使用method value。这与你的例子类似:
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函数参数返回值而方法没有。如果确实需要使用问题中的类型,则使用匿名函数使方法适应函数参数类型:
send(2, func(v int) int { d.set(v); return 0 })