为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
德玛西亚99 2021-09-13 10:33:41
我有一个接受函数作为参数的函数: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 })


查看完整回答
反对 回复 2021-09-13
  • 1 回答
  • 0 关注
  • 178 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信