go语言 方法
go?語(yǔ)言中沒(méi)有類(lèi),但是是有方法。
方法的定義:
func (recevier type) methodName(參數(shù)列表)(返回值列表){ }
方法和函數(shù)有什么區(qū)別呢?
函數(shù)可以說(shuō)誰(shuí)都可以調(diào)用,而方法只有接收者類(lèi)型相同的才可以調(diào)用。當(dāng)然了,定義上也是不同的,方法是包含了接收者的函數(shù)。
下面演示一個(gè)例子,說(shuō)明方法接收者值傳遞和引用傳遞的區(qū)別
package mainimport ("fmt" )type Int int //自定義類(lèi)型Intfunc (i *Int) add(a, b int) { //接收者類(lèi)型是Int類(lèi)型的指針,引用類(lèi)型*i = Int(a + b)return } func (i Int) Add(a, b int) { //接收者類(lèi)型是Int類(lèi)型,值類(lèi)型i = Int(a + b)return } func main() {var b Intvar c Intb.add(100, 200) //300 些時(shí)傳入的接者i是&b,就是變量b的地址相當(dāng)于(&b).add(100,200),add方法內(nèi)部:*(&b)=Int(100+200) 就是這個(gè)i指針指向的變量b的值改變?yōu)?00fmt.Println(b)c.Add(100,200) //值傳遞不帶回主函數(shù)fmt.Println(c) // 0}
轉(zhuǎn)載于:https://www.cnblogs.com/wanghaijun999/p/8157142.html
總結(jié)
- 上一篇: Linux系统下面crontab选择默认
- 下一篇: msyql备份还原