最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解golang中的method

 更新時(shí)間:2021年01月06日 11:05:39   作者:雨燕  
這篇文章主要介紹了golang中的method的相關(guān)資料,幫助大家更好的理解和使用golang,感興趣的朋友可以了解下

什么是method(方法)?method是函數(shù)的另外一種形態(tài),隸屬于某個(gè)類型的方法。

method的語法:

func (r Receiver) funcName (parameters) (result)

receiver可以看作是method的第一個(gè)參數(shù),method并且支持繼承和重寫。

  • Go中雖沒有class,但依舊有method
  • 通過顯示說明receiver來實(shí)現(xiàn)與某個(gè)類型的結(jié)合
  • 只能為同一個(gè)包中的類型定義方法
  • receiver可以是類型的值或者指針
  • 不存在方法重載
  • 可以使用值或指針來調(diào)用方法,編譯器會(huì)自動(dòng)完成轉(zhuǎn)換
  • 從某種意義上來說,方法是函數(shù)的語法糖,因?yàn)閞eceiver其實(shí)就是方法所接收的第一個(gè)參數(shù)(Method Value vs. Method Expression)
  • 如果外部結(jié)構(gòu)和嵌入結(jié)構(gòu)存在同名方法,則優(yōu)先調(diào)用外部結(jié)構(gòu)的方法
  • 類型別名不會(huì)擁有底層類型所附帶的方法
  • 方法可以調(diào)用結(jié)構(gòu)中的非公開字段

go version go1.12

/**
 * 什么是method(方法)?method是函數(shù)的另外一種形態(tài),隸屬于某個(gè)類型的方法。
 * method的語法:func (r Receiver) funcName (parameters) (result)。
 * receiver可以看作是method的第一個(gè)參數(shù),method并且支持繼承和重寫。
 */
package main

import (
  "fmt"
)

type Human struct {
  name string
  age int
}

// 字段繼承
type Student struct {
  Human // 匿名字段
  school string
}
type Employee struct {
  Human  // 匿名字段
  company string
}

// 函數(shù)的另外一種形態(tài):method,語法:func (r Receiver) funcName (parameters) (result)
// method當(dāng)作struct的字段使用
// receiver可以看作是method的第一個(gè)參數(shù)
// 指針作為receiver(接收者)和普通類型作為receiver(接收者)的區(qū)別是指針會(huì)對(duì)實(shí)例對(duì)象的內(nèi)容發(fā)生操作,
// 普通類型只是對(duì)副本進(jìn)行操作
// method也可以繼承,下面是一個(gè)匿名字段實(shí)現(xiàn)的method,包含這個(gè)匿名字段的struct也能調(diào)用這個(gè)method
func (h *Human) Info() {
  // method里面可以訪問receiver(接收者)的字段
  fmt.Printf("I am %s, %d years old\n", h.name, h.age)
}

// method重寫,重寫匿名字段的method
// 雖然method的名字一樣,但是receiver(接收者)不一樣,那么method就不一樣
func (s *Student) Info() {
  fmt.Printf("I am %s, %d years old, I am a student at %s\n", s.name, s.age, s.school)
}
func (e *Employee) Info() {
  fmt.Printf("I am %s, %d years old, I am a employee at %s\n", e.name, e.age, e.company)
}
func main() {
  s1 := Student{Human{"Jack", 20}, "tsinghua"}
  e1 := Employee{Human{"Lucy", 26}, "Google"}
  // 調(diào)用method通過.訪問,就像struct訪問字段一樣
  s1.Info()
  e1.Info()
}

以上就是詳解golang中的method的詳細(xì)內(nèi)容,更多關(guān)于golang中的method的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Golang 運(yùn)算符及位運(yùn)算詳解

    Golang 運(yùn)算符及位運(yùn)算詳解

    這篇文章主要介紹了Golang 運(yùn)算符及位運(yùn)算詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 淺談Go中數(shù)字轉(zhuǎn)換字符串的正確姿勢(shì)

    淺談Go中數(shù)字轉(zhuǎn)換字符串的正確姿勢(shì)

    這篇文章主要介紹了淺談Go中數(shù)字轉(zhuǎn)換字符串的正確姿勢(shì),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • golang?中?recover()的使用方法

    golang?中?recover()的使用方法

    這篇文章主要介紹了Guam與golang??recover()的使用方法,Recover?是一個(gè)Go語言的內(nèi)建函數(shù),可以讓進(jìn)入宕機(jī)流程中的?goroutine?恢復(fù)過來,下文更多相關(guān)資料需要的小伙伴可以參考一下
    2022-04-04
  • Golang棧結(jié)構(gòu)和后綴表達(dá)式實(shí)現(xiàn)計(jì)算器示例

    Golang棧結(jié)構(gòu)和后綴表達(dá)式實(shí)現(xiàn)計(jì)算器示例

    這篇文章主要為大家介紹了Golang棧結(jié)構(gòu)和后綴表達(dá)式實(shí)現(xiàn)計(jì)算器示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Go中JSON解析時(shí)tag的使用

    Go中JSON解析時(shí)tag的使用

    本文主要介紹了Go中JSON解析時(shí)tag的使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Go?mod包管理工具詳解

    Go?mod包管理工具詳解

    Go?mod作為Go語言的官方包管理工具,可以幫助開發(fā)者更好地管理包和依賴,提高開發(fā)效率和項(xiàng)目可維護(hù)性,本文將介紹Go語言的包和依賴管理,以及Go?mod的作用和優(yōu)勢(shì),需要的朋友可以參考下
    2023-05-05
  • 從并發(fā)到并行解析Go語言中的sync.WaitGroup

    從并發(fā)到并行解析Go語言中的sync.WaitGroup

    Go?語言提供了許多工具和機(jī)制來實(shí)現(xiàn)并發(fā)編程,其中之一就是?sync.WaitGroup。本文就來深入討論?sync.WaitGroup,探索其工作原理和在實(shí)際應(yīng)用中的使用方法吧
    2023-05-05
  • 一文詳解go mod依賴管理詳情

    一文詳解go mod依賴管理詳情

    這篇文章主要介紹了一文詳解go mod依賴管理詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-07-07
  • Go語言反射reflect.Value實(shí)現(xiàn)方法的調(diào)用

    Go語言反射reflect.Value實(shí)現(xiàn)方法的調(diào)用

    本文主要介紹了Go語言反射reflect.Value實(shí)現(xiàn)方法的調(diào)用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Go依賴注入工具wire的具體使用

    Go依賴注入工具wire的具體使用

    本文主要介紹了Go依賴注入工具wire的具體使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05

最新評(píng)論

凤凰县| 黎平县| 勃利县| 阳山县| 德钦县| 兴文县| 丹凤县| 红安县| 开化县| 阳泉市| 且末县| 日土县| 平武县| 上高县| 垦利县| 临西县| 屏山县| 东丰县| 彝良县| 桦川县| 望谟县| 平阳县| 达孜县| 海林市| 广东省| 河北省| 上杭县| 弥渡县| 论坛| 张掖市| 济宁市| 盖州市| 浦北县| 怀安县| 平邑县| 措勤县| 崇义县| 米林县| 金昌市| 务川| 铁岭市|