我有一个将函数作为参数的包级函数(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 回答
- 0 关注
- 261 浏览
添加回答
举报
0/150
提交
取消