如何分析Go語(yǔ)言中的方法

如何分析Go語(yǔ)言中的方法,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

10年積累的成都網(wǎng)站建設(shè)、網(wǎng)站制作經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有槐蔭免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

概念

在golang中的方法是作用在特定類型的變量上,因此自定義類型都是可以有方法的,不僅僅只有一個(gè)struct 結(jié)構(gòu)體。

方法和函數(shù)的區(qū)別

但是這里方法和我們之前介紹的函數(shù)有什么區(qū)別呢?

大致小棧君為大家講解一下,在函數(shù)中并沒有對(duì)象的概念,因此我們對(duì)面向?qū)ο蟮暮瘮?shù)叫做方法,但是他們本質(zhì)上都是function,只是函數(shù)并不屬于任何一個(gè)對(duì)象,因此只要符合條件的參數(shù)都是可以調(diào)用函數(shù)。

但是并不適用于方法。因?yàn)榉椒▋H限于某一個(gè)對(duì)象,在后面小棧君會(huì)給大家進(jìn)行實(shí)例舉例說明。

格式

針對(duì)于Go語(yǔ)言中的方法的格式如下:

func (receive  type) methodName(args ) (返回參數(shù)){}

就拿我們之前講過的一個(gè)例子而言,我們定義的一個(gè)car 和一個(gè)smallCar 結(jié)構(gòu)體,其中SmallCar繼承了Car的屬性,理所應(yīng)當(dāng)?shù)囊怖^承了相應(yīng)的方法。

但是小伙伴請(qǐng)注意,我們?cè)诙x方法的時(shí)候限定了Car,也就是說這一個(gè)Run方法除了Car和繼承Car的子類,其他對(duì)象是無法使用的。如果強(qiáng)行使用編譯器會(huì)直接報(bào)錯(cuò),具體例子如圖所示:

特別注意的一點(diǎn)是,在Go語(yǔ)言中依舊要區(qū)分值傳遞和引用傳遞,如下圖所示:

也就是說在方法中也是區(qū)分了這個(gè)差別,如果稍微不注意,對(duì)于新手的小伙伴來講很有可能會(huì)導(dǎo)致排查半天的問題而不得解。

同樣的是方法也是遵循大小寫的區(qū)別,小寫的作用域只限于當(dāng)前的文件中,對(duì)于其他外部需要調(diào)用的方法我們統(tǒng)一會(huì)進(jìn)行首字母大寫處理。這也算是Go語(yǔ)言的一個(gè)規(guī)范,小棧君也是多次說過這個(gè)問題,希望小伙伴注意一下這個(gè)問題。

繼承

同樣類似于結(jié)構(gòu)體中的繼承,方法也是同樣可以繼承的,就如上圖所示,我們的SmallCar繼承了Car的相關(guān)屬性,同樣SmallCar也同樣擁有Car所特有的方法。

組合和匿名字段

如果一個(gè)struct嵌套了另一個(gè)匿名結(jié)構(gòu)體,那么這個(gè)結(jié)構(gòu)體可以直接訪問匿名結(jié)構(gòu)體的方法從而實(shí)現(xiàn)繼承,如果一個(gè)結(jié)構(gòu)體嵌套了多個(gè)匿名結(jié)構(gòu)體。

那么這個(gè)結(jié)構(gòu)體可以直接訪問多個(gè)匿名結(jié)構(gòu)體的方法,從而實(shí)現(xiàn)多重繼承,當(dāng)然在真實(shí)的項(xiàng)目當(dāng)中并不推薦多重繼承。

如果發(fā)現(xiàn)問題這會(huì)導(dǎo)致代碼的排查復(fù)雜性和代碼的可讀性變差。

看完上述內(nèi)容,你們掌握如何分析Go語(yǔ)言中的方法的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

當(dāng)前名稱:如何分析Go語(yǔ)言中的方法
分享URL:http://bm7419.com/article46/pcspeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航云服務(wù)器、網(wǎng)站導(dǎo)航、網(wǎng)站營(yíng)銷、企業(yè)建站域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司