go語言學習筆記(第3章)—物件導向編程

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。一個典型的類型系統包括:
  • 基礎類型: byte, int, bool, float等
  • 複合類型:數組,結構體,指標
  • 可以指向任意對象的類型(Any類型)
  • 值語義和引用語義
  • 物件導向,即所有具備物件導向特徵的類型
  • 介面
在GO語言中可以為任意類型(包括內建類型)添加相應的方法
上面的例子中我們定義了一個新類型 Integer ,Integer和int沒有本質區別,只是為內建的int增加了一個方法Less(),可以讓整型像一個普通的類一樣使用了。
在GO語言中沒有隱藏的this指標 1) 方法施加的目標顯示傳遞,沒有被隱藏起來 2) 方法施加的目標不需要非得是指標,也不用非得叫this
GO語言和C語言一樣,類型都是基於值傳遞的,要想改變變數的值,只能在函數中傳遞指標。
1. 類型系統
1.1.  值語義和引用語義 值語義和引用語義的差別在於賦值 b = a b.Modify()
如果b的修改不會影響a的值,那麼此類型屬於實值型別。如果會影響a的值,那麼此類型是參考型別。
GO語言中的大多數類型都屬於值語義,包括: 基本類型: byte, int, bool, float32, float64和string等 複合類型: array, struct, pointer等
GO語言中的類型的值語義表現的非常徹底。
1.2. 結構體 GO語言放棄了包括繼承在內的大量物件導向特性,只保留了組合這個最基礎的特性。
組合不能算物件導向的特性,因為在C語言這樣的過程式程式設計語言中,也有結構體,也有組合。組合只是形式複合類型的基礎。
GO語言中結構體的使用方式與C語言並沒有什麼明顯的不同。
2. 初始化 在GO語言中,未進行顯式初始化的變數都會被初始化為該類型的零值,例如bool類型的零值為false, int類型的零值為0, string類型的零值為空白字串。
結構體有多種初始方法,如下:

3. 匿名組合 確切的說,GO語言也提供了繼承,但是採用了組合的文法,所以我們將其稱為匿名組合
4. 可見度 GO語言對關鍵字的增加非常吝嗇,沒有private, protected, public這樣的關鍵字。要使某個符號對其他包可見,需要將該符號定義為以大寫字母開頭。
5. 介面 GO語言的介面並不是其他語言中所提供的介面概念。JAVA現在的介面是侵入式介面, GO的介面時非侵入式的。
在GO語言中,一個類只要實現了介面要求的所有函數,我們就說這個類實現了該介面。
在GO語言中,介面賦值在GO語言中分為如下兩種情況: 1. 將對象執行個體賦值給介面 2. 將一個介面賦值給另一個介面

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.