Go 中如何比较函数
简介
Go 中,函数是可以引用的通过变量并作为参数传递给其他函数。然而,需要注意的是,Go 中的函数不能直接比较。这意味着您不能使用标准比较运算符(==、!= 等)来确定两个函数是否相等。
正确的比较方法
准确比较两个函数的唯一方法是比较它们的地址。这是因为函数的地址唯一标识它。要获取函数的地址,可以使用:
示例
考虑以下 Go 代码:
<code class="go">type Action func(foo string) var Undefined Action = func(foo string) {} var Defined Action = func(foo string) {} func compareFunctions() { if fmt.Sprintf("%v", Undefined) == fmt.Sprintf("%v", Undefined) { fmt.Println("Undefined and Undefined are equal") } else { fmt.Println("Undefined and Undefined are not equal") } if fmt.Sprintf("%v", Defined) == fmt.Sprintf("%v", Defined) { fmt.Println("Defined and Defined are equal") } else { fmt.Println("Defined and Defined are not equal") } if fmt.Sprintf("%v", Undefined) == fmt.Sprintf("%v", Defined) { fmt.Println("Undefined and Defined are equal") } else { fmt.Println("Undefined and Defined are not equal") } }</code>
运行此代码时,它会生成以下输出:
Undefined and Undefined are equal Defined and Defined are equal Undefined and Defined are not equal
此输出演示可以使用函数的地址进行比较并且地址不同的两个函数不相等。
结论
虽然 Go 中的函数值不能直接比较,但可以通过比较它们的地址来确定是否它们是相同的功能。通过上面的方法,你可以在Go中准确判断两个函数是否相等。
以上是如何比较 Go 中的函数?的详细内容。更多信息请关注PHP中文网其他相关文章!