中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何分析Go語言中的方法

發布時間:2022-01-17 17:59:10 來源:億速云 閱讀:146 作者:柒染 欄目:數據庫

如何分析Go語言中的方法,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

概念

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

方法和函數的區別

但是這里方法和我們之前介紹的函數有什么區別呢?

大致小棧君為大家講解一下,在函數中并沒有對象的概念,因此我們對面向對象的函數叫做方法,但是他們本質上都是function,只是函數并不屬于任何一個對象,因此只要符合條件的參數都是可以調用函數。

但是并不適用于方法。因為方法僅限于某一個對象,在后面小棧君會給大家進行實例舉例說明。

格式

針對于Go語言中的方法的格式如下:

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

就拿我們之前講過的一個例子而言,我們定義的一個car 和一個smallCar 結構體,其中SmallCar繼承了Car的屬性,理所應當的也繼承了相應的方法。

但是小伙伴請注意,我們在定義方法的時候限定了Car,也就是說這一個Run方法除了Car和繼承Car的子類,其他對象是無法使用的。如果強行使用編譯器會直接報錯,具體例子如圖所示:

特別注意的一點是,在Go語言中依舊要區分值傳遞和引用傳遞,如下圖所示:

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

同樣的是方法也是遵循大小寫的區別,小寫的作用域只限于當前的文件中,對于其他外部需要調用的方法我們統一會進行首字母大寫處理。這也算是Go語言的一個規范,小棧君也是多次說過這個問題,希望小伙伴注意一下這個問題。

繼承

同樣類似于結構體中的繼承,方法也是同樣可以繼承的,就如上圖所示,我們的SmallCar繼承了Car的相關屬性,同樣SmallCar也同樣擁有Car所特有的方法。

組合和匿名字段

如果一個struct嵌套了另一個匿名結構體,那么這個結構體可以直接訪問匿名結構體的方法從而實現繼承,如果一個結構體嵌套了多個匿名結構體。

那么這個結構體可以直接訪問多個匿名結構體的方法,從而實現多重繼承,當然在真實的項目當中并不推薦多重繼承。

如果發現問題這會導致代碼的排查復雜性和代碼的可讀性變差。

看完上述內容,你們掌握如何分析Go語言中的方法的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

垣曲县| 中牟县| 兴业县| 清水县| 奉新县| 湟源县| 宝山区| 英吉沙县| 新兴县| 突泉县| 灵川县| 潼关县| 临海市| 深圳市| 车险| 宁安市| 万年县| 河源市| 万盛区| 渝中区| 兰坪| 南投市| 伊宁市| 科技| 南汇区| 宜兰县| 日土县| 阳东县| 邳州市| 天气| 台东市| 耒阳市| 于都县| 土默特左旗| 潜江市| 抚顺市| 奉节县| 阿巴嘎旗| 贡觉县| 上虞市| 三穗县|