日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

golang中的方法

發布時間:2025/6/15 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 golang中的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

方法

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

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

給某個類型綁定函數

type long int //面向對象,方法:某個類型綁定一個函數 func (tmp long) Add02(other long) long {return tmp + other }func main() {//定義一個變量var a long = 2//調用方式: 變量名.函數(所需參數)r := a.Add02(3)fmt.Println("r = ", r) }

輸出

r = 5 type Person struct {name stringsex byteage int }func (tmp Person) PrintInfo() {fmt.Println("tmp = ", tmp) }func main() {p := Person{"mike", 'm', 18}p.PrintInfo() } type Person struct {name stringsex byteage int }func (p *Person) setInfo(n string, s byte, a int) {p.name = np.sex = sp.age = a }func main() {var p2 Person//第二個參數會轉ascii碼(&p2).setInfo("111", 'f', 22)fmt.Println(p2) }

調用著,指針和非指針都會自動轉換
用實例value和pointer調用方法(含匿名字段)不受方法約束,編譯器總是查找全部方法,并自動轉換receiver實參

方法的繼承

type Person struct {name stringsex byteage int }type Student struct {Person //匿名字段id intaddr string }func (p *Person) PrintInfo() {fmt.Println(*p) }func main() {s := Student{Person{"mike", 'm', 18}, 66, "111"}//繼承性s.PrintInfo() }

輸出

{mike 109 18}

子方法把父方法給繼承過來了,但是是父方法調用的

方法重寫

Student也實現了一個方法,這個方法和person同名,這種叫重寫

type Person struct {name stringsex byteage int }type Student struct {Person //匿名字段id intaddr string }func (s *Student) PrintInfo() {fmt.Println(*s) }func (p *Person) PrintInfo() {fmt.Println(*p) }func main() {s := Student{Person{"mike", 'm', 18}, 66, "111"}//父類調用的s.PrintInfo()//顯式調用s.Person.PrintInfo() }

方法值

type Person struct {name stringsex byteage int }func (p *Person) PrintInfo() {fmt.Println(*p) }func main() {p := Person{"mike", 'm', 18}//傳統調用方式p.PrintInfo()//保存方法入口地址,不帶()PFunc := p.PrintInfoPFunc()//等價于p.PrintInfo() }

方法表達式

顯示把接收者傳遞過去

type Person struct {name stringsex byteage int }func (p *Person) PrintInfo() {fmt.Println(*p) }func main() {p := Person{"mike", 'm', 18}//方法表達式,這邊沒接收者f := (*Person).PrintInfof(&p) //顯示把接收者傳遞過去 }

總結

以上是生活随笔為你收集整理的golang中的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。