您好,登錄后才能下訂單哦!
本篇內容主要講解“Go語言的類相關知識點有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Go語言的類相關知識點有哪些”吧!
1.C++中的公私有屬性,一定要有關鍵字public, protected, private來修飾。
并且這些屬性的作用范圍是針對類來說的,不是針對類的實例來說的,是編譯階段的概念。
詳細介紹參見我的另外一篇文章:private在C++中的范圍
2.Go中也有公私有的概念,不過沒有protected,它區分公有,還是私有,是通過變量的第一個字母的大小寫。大寫表示的是公有,小寫是私有。
不過這里的作用范圍不是整個struct內部,而是整個包,公有跨包可以調用,私有不行,當然也是編譯階段的概念。
1.C++的構造函數和析構函數基本上是標配,分別用于初始化數據和釋放數據。
當然構造函數和析構函數,在C++中被編譯器單獨處理,因為這兩種函數與其他函數不同,沒有返回值,會被自動調用。
2.Go中,并沒有構造函數和析構函數的概念,這和Go語言的內存回收機制有關系。
對于析構函數,Go提供了defer的關鍵字,它只要在函數內部實現,等到函數運行結束時便會被自動調用。defer有點像析構函數,但是卻不是,因為它的作用范圍是函數級別。(后續會整理defer )
當然Go也可以采取其他手段模擬構造函數和析構函數,不過筆者覺得最好不這么做,既然Go特意這么設計,就不希望如此實現。
1.C++中,繼承很重要,一個目的是復用基類的數據和方法,一個目的是實現多態,是Is-a的關系。
2.Go中,準確的說不存在繼承,不過對于復用基類的數據和方法,可以采用組合的方式,如此以來的實現,其實和C++的繼承很像。
對于C++中多態的方式,Go中的interface的實現比較類似,在這里不做過多闡述。(后續會單獨整理這一部分。)
1.C++中支持函數重載,也就是函數名字相同,但是參數不同,這樣C++的編譯器會把它們當做不同的函數來實現。
2.Go中沒有函數重載的概念,卻又可變參的函數支持,這從根本上解決了函數重載的功能。
到此,相信大家對“Go語言的類相關知識點有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。