go語言之進階篇方法面向過程和對象函數的區別


1、方法 (method)

在面向對象編程中,一個對象其實也就是一個簡單的值或者一個變量,在這個對象中會包含一些函數,這種帶有接收者的函數,我們稱為方法(method)。 本質上,一個方法則是一個和特殊類型關聯的函數。

一個面向對象的程序會用方法來表達其屬性和對應的操作,這樣使用這個對象的用戶就不需要直接去操作對象,而是借助方法來做這些事情。

在Go語言中,可以給任意自定義類型(包括內置類型,但不包括指針類型)添加相應的方法。

方法總是綁定對象實例,並隱式將實例作為第1實參 (receiver),方法的語法如下:

func (receiver ReceiverType) funcName(parameters) (results)
  1. 參數 receiver 可任意命名。如方法中未曾使用,可省略參數名。
  2. 參數 receiver 類型可以是 T 或 *T。基類型 T 不能是接⼝或指針。
  3. 不支持重載方法,也就是說,不能定義名字相同但是不同參數的方法

2、為類型添加方法

示例:

package main

import "fmt"

//面向對象,方法:給某個類型綁定一個函數
func Add01(a, b int) int {
	return a + b
}

type long int

//tmp叫接收者,接收者就是傳遞的一個參數
func (tmp long) Add02(other long) long {
	return tmp + other
}

func main() {
	var result int
	result = Add01(1, 1) //普通函數調用方式
	fmt.Println("result = ", result)

	//定義一個變量
	var a long = 2

	//調用方法格式: 變量名.函數(所需參數)
	r := a.Add02(3)
	fmt.Println("r = ", r)

}

執行結果:

result =  2
r =  5      //long =2  傳給tmp, a.add02(3) 傳給(other long)

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM