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

如何将go方法转换为func?

如何将go方法转换为func?

Go
温温酱 2021-04-30 16:31:11
我有一个将函数作为参数的包级函数(Frob)。对于函数参数,我想传入一个具有特定结构实例的方法(FrobMethod)作为接收者(myFrob)。我发现完成此操作的唯一方法是使用捕获目标结构的func文字/闭包。这就需要重复func签名和参数,这似乎太冗长了。有没有更好的办法?package mainimport "fmt"func Frob( frobber func( int ) ( string ) ) {    fmt.Printf( "Frob %s\n", frobber( 42 ) )}type MyFrob struct {    Prefix string}func ( m MyFrob ) FrobMethod( n int ) ( string ) {    return fmt.Sprintf( "%s %d", m.Prefix, n )}func main() {    myFrob := MyFrob { Prefix: "Hello" }    // C# allows something like this:    //    //Frob( myFrob.FrobMethod )    Frob( func ( n int ) ( string ) {        return myFrob.FrobMethod( n )    } )}...一个实际的例子是net / http中的HandleFunc。
查看完整描述

3 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

从Go 1.1开始,C#风格的方法参考适用于:

Frob( myFrob.FrobMethod )

请参阅Go语言规范的“方法表达式”部分。


查看完整回答
反对 回复 2021-05-10
  • 3 回答
  • 0 关注
  • 261 浏览
慕课专栏
更多

添加回答

举报

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