Go語言淺嘗之方法
Hello,各位小夥伴大家好,我是小棧君,因為疫情的緣故,所以今年過了一個非同尋常的年,在這裡小棧君也是衷心的希望大家清洗手,多通風,出門記得戴口罩,人多別去湊熱鬧。
安全衛生從你我做起,最重要的是即使呆在家裡辦公也別忘了學習哦~
今天我們繼續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巢狀了另一個匿名結構體,那麼這個結構體可以直接訪問匿名結構體的方法從而實現繼承,如果一個結構體巢狀了多個匿名結構體。
那麼這個結構體可以直接訪問多個匿名結構體的方法,從而實現多重繼承,當然在真實的專案當中並不推薦多重繼承。
如果發現問題這會導致程式碼的排查複雜性和程式碼的可讀性變差。
好了,今天的分享就到這裡,我們下期再見,如果你喜歡我的分享,可以進行轉發,點贊或是分享給身邊的朋友。武漢加油,中國加油~ 我是小棧君,我們下期再見,拜了個拜。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/964/viewspace-2824846/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Go語言學習筆記(七)之方法Go筆記
- go語言入門之-函式和方法Go函式
- GO語言學習筆記之mac環境go語言配置Go筆記Mac
- Go語言庫系列之emailGoAI
- Go 語言 結構體和方法Go結構體
- Go語言————1、初識GO語言Go
- Go 語言操作 MySQL 之 CURD 操作GoMySql
- Go 語言操作 MySQL 之 SQLX 包GoMySql
- 開心檔之Go 語言常量Go
- 用 Go 語言實戰 Limit Concurrency 方法GoMIT
- Go 語言解析 yaml 檔案的方法GoYAML
- 【Go語言入門系列】(七)如何使用Go的方法?Go
- Go 語言傳值和深淺複製問題Go
- GO語言————2、GO語言環境安裝Go
- Go 語言基礎之 Context 詳解GoContext
- Go 語言操作 MySQL 之 預處理GoMySql
- go語言基礎之——iota的用法Go
- 十九、Go語言基礎之併發Go
- Go 語言操作 MySQL 之 事務操作GoMySql
- GO語言入門 - (六)函式和方法Go函式
- 【Go語言入門系列】(八)Go語言是不是面嚮物件語言?Go物件
- Go_go語言初探Go
- SegmentFault 思否技術徵文丨淺談 Go 語言框架Go框架
- Go語言mapGo
- go 語言切片Go
- go 語言常量Go
- go語言使用Go
- Go語言系列(三)之陣列和切片Go陣列
- go語言go get 匯入官方依賴的解決方法Go
- 函數語言程式設計嘗試之俄羅斯方塊函數程式設計
- 【Golang 基礎系列十】Go 語言 條件語句之ifGolang
- 教女朋友寫方法 -- 就要學習 Go 語言Go
- Go語言學習之路-11-方法與介面Go
- 什麼是Go語言?Go語言有什麼特點?Go
- Go語言實現設計模式之命令模式Go設計模式
- Go語言入門系列(四)之map的使用Go
- Go語言排程器之盜取goroutine(17)Go
- 區塊鏈開發之Go語言—IO操作區塊鏈Go