go - 方法类型定义的语法辅助?

标签 go

如果这是显而易见的,我们深表歉意; Golang 相对较新。

我需要将带有指针接收器的函数作为参数传递给方法,并将该函数指针存储在其他结构等中。

没有接收器,这很简单。对于诸如...的功能

func Sample(ctx *Context, arg int) (err error)

...我可以使用以下语法创建函数类型...

type SampleFunc func (ctx *Context, arg int) (err error)

...但是对于带有接收器的函数,例如...

func (ctx *Context) Sample(arg int) (err error)

...类型定义的语法是什么?我试过了……

type SampleFunc func (ctx *Context) (arg int) (err error)

...但这只会产生 syntax error: unexpected ( after top level declaration

感谢您的建议。

最佳答案

语法是

type SampleFunc func (ctx *Context, arg int) (err error)

Sample 方法分配给 SampleFunc 类型的变量,如下所示:

var f SampleFunc = (*Context).Sample

指针接收器方法需要 (*) 部分。像这样调用它:

 f(ctx, 1)

playground example

关于go - 方法类型定义的语法辅助?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44293693/

相关文章:

sql - 如何停止 golang gc 并手动触发它?

go - 我如何从向 stdout 发出错误的一系列 exec 命令中获取错误消息

mongodb - Golang mongodb 驱动程序错误模式验证

json - Golang - 无法将数字解码为字符串类型的 Go 值

string - Go channel 将每个字母作为字符串而不是整个字符串

golang gofmt 包重写通配符

go - 在 Go 中,你如何拥有一个带有指向数组指针的结构体?

go - 两个排序数组中第 k 个最高的

winapi - 在 Windows 上将结构与 Golang 系统调用一起使用?

database - 为什么创建表操作将所有者 'yugabyte'作为所有者附加到新表,但是所连接的数据库具有不同的所有者?