函数字段与结构体方法
在 Go 中,有两种方法将函数与结构体关联起来:作为字段或作为一种方法。虽然这两种方法有不同的目的,但理解区别对于有效编码至关重要。
函数类型的字段
函数类型的字段指的是结构体中的变量可以将函数作为其值。它提供了一种简单的方法来存储可调用例程以供以后执行。与方法不同,这些函数字段不是结构体方法集的一部分。
方法
方法是显式附加到特定结构类型的函数。当使用结构体作为接收者进行声明时,它们成为结构体方法集的一部分,提供对结构体内部状态的访问。实现接口需要定义真正的方法。
何时使用
示例
考虑以下代码片段:
<code class="go">type Foo struct { Bar func() } func main() { f := Foo{ Bar: func() { fmt.Println("initial") }, } f.Bar() f.Bar = func() { fmt.Println("changed") } f.Bar() }</code>
这里,f.Bar是一个函数类型的字段。它可以在运行时重新分配,如分配和调用第二个函数值时所见。
与 true 方法相比,Bar 无法访问 Foo 的任何内部状态。它独立于结构本身运行。
以上是Go 中何时使用函数字段与结构体方法?的详细内容。更多信息请关注PHP中文网其他相关文章!