go语言学习笔记:函数与方法
函数的声明:
func name(parameter-list) (result-list) {
body
}
方法的声明:
在函数声明时,在其名字之前放上一个变量,即是一个方法。这个附加的参数会将该函数附加到这种类型上,即相当于为这种类型定义了一个独占的方法。
package geometry import "math" type Point struct{ X, Y float64 } // same thing, but as a method of the Point type func (p Point) Distance(q Point) float64 { return math.Hypot(q.X-p.X, q.Y-p.Y) }
这一点跟C++很像,既支持普通的函数,也支持面向对象的方法。 但是有时候却让人迷惑,调用某个对象的函数的时候到底是否要传入对象本身呢?或者说什么时候我应该使用函数,什么时候应该使用对象的方法呢?
其实根本原因是golang这种编程语言不是纯面向对象的,所以它搞这么一套让类型(类)拥有自己的一些方法
函数前面的类型可以是值接收者,也可以是指针接收者。 值接收者类似于python里面staticmethod,不会对调用者的值进行修改;而使用指针接收者的时候在函数中的修改会修改到调用者。

浙公网安备 33010602011771号