在 Golang 中,方法和函数的区别主要在于接收者的不同。
- 函数:函数是一段可以重用的代码,用于执行一个具体的任务。函数可以接收零个或多个参数,并且可以返回零个或多个值。
- 方法:方法是作用于特定类型的函数。方法有一个接收者,接收者出现在 func 关键字和方法名之间。接收者可以是结构体类型或非结构体类型。
方法和函数的语法格式如下:
函数:
func name(parameter list) (return list) {
...
}
方法:
func (receiver) name(parameter list) (return list) {
...
}
例如:
// 函数
func add(x int, y int) int {
return x + y
}
// Circle 结构体
type Circle struct {
radius float64
}
// Circle 类型方法
func (c Circle) getArea() float64 {
return 3.14 * c.radius * c.radius
}
我们可以这样理解方法和函数:
- 函数是一段可以重用的代码块,用于执行一些任务,没有接收者的概念。
- 方法是作用于特定类型的函数,首参数是该类型的接收者。方法可以访问接收者的字段,实现对该类型的操作。
所以总结来说,方法和函数的区别在于是否有接收者这个概念。否则语法和调用上都很相似。
需要强调的是,在 Golang 中,方法就像其它函数调用一样,方法调用不会造成性能损失。这是因为方法调用会被 Go 编译器在编译时转为普通的函数调用。