Golang 方法
Go语言支持方法。Go方法与Go函数类似,但有一点不同,即方法中包含一个接收方参数。在接收器参数的帮助下,方法可以访问接收器的属性。这里,接收器可以是结构类型,也可以是非结构类型。当你在代码中创建一个方法时,接收器和接收器类型必须存在于同一个包中。你不允许创建一个接收方类型已经在另一个包中定义的方法,包括int、string等内置的类型。如果你试图这样做,那么编译器将给出一个错误。
语法
这里,接收器可以在方法中被访问。
带有结构类型接收器的方法
在Go语言中,你可以定义一个方法,其接收器是一个结构类型。如下面的例子所示,这个接收器可以在方法内部被访问。
例子
输出
带有非结构化类型接收器的方法
在Go语言中,只要类型和方法的定义存在于同一个包中,你就可以创建一个带有非结构类型接收器的方法。如果它们出现在不同的包中,如int、string等,那么编译器将给出一个错误,因为它们被定义在不同的包中。
例子
输出
带有指针接收器的方法
在Go语言中,你可以创建一个带有 指针 接收器的方法。在指针接收器的帮助下,如果方法发生了变化,它将反映在调用者身上,这在值接收器方法中是不可能的。
语法
例子
输出
方法可以同时接受指针和值
我们知道,在Go中,当一个函数有一个值参数时,那么它只接受参数的值,如果你试图向一个值函数传递一个指针,那么它将不接受,反之亦然。但是Go方法可以同时接受值和指针,无论它是用指针还是值的接收器定义的。正如下面的例子所示。
例子
输出
方法与功能的区别
方法 | 功能性 |
---|---|
它包含一个接收器。 | 它不包含一个接收器。 |
在程序中可以定义相同名称但不同类型的方法。 | 不允许在程序中定义同名但不同类型的函数。 |
它不能作为一阶对象使用。 | 可以作为一阶对象使用,可以通过 |