猿问

将结构实例上的方法作为参数传递

我有一个接受函数作为参数的函数:


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


德玛西亚99
浏览 179回答 1
1回答

慕妹3146593

您可以使用方法值。这是类似于您的示例的内容:package mainimport "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 })
随时随地看视频慕课网APP

相关分类

Go
我要回答