Golang之物件導向和指標

2022-03-05 08:06:24 字數 1403 閱讀 9369

武大郎,來十個燒餅。。。

package main

import

"fmt

"type integer

int//

為內建的int型別增加了新方法less,物件導向寫法

func (a integer) less(b integer) bool

func integer_less(a integer, b integer)

bool

//go的物件導向,如果需要修改物件,必須用指標,這不是go約束,還是自然約束

func (a *integer) add(b integer)

//integer型別是乙個int,為int起乙個別名integer,

//並且增加一系列方法add,add2,又程式設計了乙個新的型別,這個型別還完全擁有int的功能

//傳遞值而不是指標

func (a integer) add2(b integer)

func main()

if integer_less(a, 2

)

//為integer又加了add方法,add()方法需要修改物件的值,需要指標引用

"a=", a)

//實現成員方法傳入的如果不是指標,而是值,也就是integer,而非*iteger,,這時a=1

a.add2(2

) fmt.println("a=

", a)

//go語言和c語言一樣,型別都是基於值傳遞,想要修改變數的值,只能傳遞指標}/*

go語言中沒有隱藏的this指標

方法施加的目標(「物件」)顯示傳遞,沒有被隱藏

方法施加的目標(「物件」)不需要非得是指標,也不用非得叫this

*/

大郎說,燒餅放在家裡了

//

值語義和引用語義

//b=a

//如果b的修改,不影響a的值,那麼此型別就是值型別

//如果會影響a的值,那麼此型別就是引用型別

//go語言大多態別都是值語義

//基本型別:byte、int、bool、float32、float64、string等

//復合型別:陣列(array)、結構體(struct)和指標(point)

//陣列被完整的複製,就是值語義

func main()

var b=a //

表示b=a賦值語句,是陣列內容的完整複製

b[1]++fmt.println(a,b)}//

引用方法,需要使用指標

func main()

var b = &a //

這句賦值,是陣列內容的引用,變數b型別是*[3]int型別

b[1]++fmt.print(a, *b)

}

java之物件導向

類是用於描述同一型別的物件的乙個抽象。類中定義了這一類物件所具有的靜態和動態屬性 靜態屬性 成員變數 動態屬性 方法 1 類可以看成是一類物件的模板,物件可以看成該類的乙個具體例項 2 首先必須定義類才能有物件 說到類,就不得不說構造其構造方法了 在new乙個物件是,呼叫的就是類中的構造方法 列如p...

static之物件導向

一 靜態資料成員子 includeusing namespace std class point int point num 0 定義靜態資料成員 int main 對於類的非靜態資料成員,每個類物件都有自己的拷貝。而對於靜態資料成員被當作是類的成員。就像上述例子中,雖然定義了4個物件,但是靜態資料...

Lua Lua之物件導向

萬物皆值 函式也是一種值 正式這個特點我們可以使用 table 陣列 構建乙個包含有屬性和方法的 table,這個table 就可以被我們當做物件來使用 tbl1 tbl2 setmetatable tbl2,print tbl2.a 輸出1metastable可以用來改變table的行為,如 in...