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,不会对调用者的值进行修改;而使用指针接收者的时候在函数中的修改会修改到调用者。

 

posted @ 2017-11-28 08:57  你的KPI完成了吗  阅读(101)  评论(0)    收藏  举报