接收器的格式以下:函數
func (接收器變量 接收器類型) 方法名(參數列表) (返回參數) {
函數體
}性能
對各部分的說明:this
接收器根據接收器的類型能夠分爲指針接收器、非指針接收器。兩種接收器在使用時會產生不一樣的效果。根據效果的不一樣,兩種接收器會被用於不一樣性能和功能要求的代碼中spa
// 指示器 package main import "fmt" type Point struct { x int y int } func (p *Point) X() int{ return p.x } func (p *Point) Y() int { return p.y } func (p *Point) setX(x int) { p.x = x } func (p *Point) setY(y int) { p.y = y } func (p Point) X1() int{ return p.x } func (p Point) Y1() int { return p.y } func (p Point) setX1(x int) { p.x = x } func (p Point) setY1(y int) { p.y = y } func main(){ // 指針指示器 // 指針類型的接收器由一個結構體的指針組成,更接近於面向對象中的 this 或者 self。 // 因爲指針的特性,調用方法時,修改接收器指針的任意成員變量,在方法結束後,修改都是有效的。 point := new(Point) point.setX(10) point.setY(15) fmt.Println(point) // 非指針指示器 // 當方法做用於非指針接收器時,Go 語言會在代碼運行時將接收器的值複製一份。 // 在非指針接收器的方法中能夠獲取接收器的成員值,但修改後無效。 point1 := Point{1,2}; point1.setX1(10) point1.setY1(100) fmt.Println(point1) }