Go 中的方法表达式
Go 中的方法表达式允许您使用自定义对象作为第一个参数来调用方法。当您需要将特定操作传递给函数时,这非常有用。
理解代码片段
考虑以下 Go 代码:
func main() { dog := Dog{} b := (*Dog).Bark // method expression b(&dog, 5) } type Dog struct {} func (d *Dog) Bark(n int) { for i := 0; i < n; i++ { fmt.Println("Bark") } }
在此示例中,使用方法表达式将函数分配给变量 b。方法表达式 (*Dog).Bark 将 Dog 类型的 Bark 方法与指针接收器 (*Dog) 相关联。
调用 b 时,会以 Dog 对象作为第一个参数来调用 Bark 方法5 作为第二个参数。该方法将“Bark”打印到控制台五次。
方法表达式的优点
用法示例
方法表达式可以在各种情况下使用。例如,您可以定义一个辅助函数,它接受一个方法表达式和一个对象,然后根据该方法执行操作:
func DoAction(f func(*Dog, int), d *Dog, n int) { f(d, n) } ... func main() { var b func(*Dog, int) if (shouldBark) { b = (*Dog).Bark } else { b = (*Dog).Sit } d := Dog{} DoAction(b, &d, 3) }
以上是方法表达式如何在 Go 中将方法作为参数传递?的详细内容。更多信息请关注PHP中文网其他相关文章!