golang 建構函式

2021-10-02 15:11:18 字數 870 閱讀 5835

go語言的型別或結構體沒有建構函式的功能,但是我們可以使用結構體初始化的過程來模擬實現建構函式。

其他程式語言建構函式的一些常見功能及特性如下:

type cat struct

func

newcatbyname

(name string

)*cat

}func

newcatbycolor

(color string

)*cat

}

黑貓是一種貓,貓是黑貓的一種泛稱,同時描述這兩種概念時,就是派生,黑貓派生自貓的種類,使用結構體描述貓和黑貓的關係時,將貓(cat)的結構體嵌入到黑貓(blackcat)中,表示黑貓擁有貓的特性,然後再使用兩個不同的建構函式分別構造出黑貓和貓兩個結構體例項,參考下面的**:

type cat struct

type blackcat struct

// 「構造基類」

func

newcat

(name string

)*cat

}// 「構造子類」

func

newblackcat

(color string

)*blackcat

cat.color = color

return cat

}

這個例子中,cat 結構體類似於物件導向中的「基類」,blackcat 嵌入 cat 結構體,類似於物件導向中的「派生」,例項化時,blackcat 中的 cat 也會一併被例項化。

總之,go語言中沒有提供建構函式相關的特殊機制,使用者根據自己的需求,將引數使用函式傳遞到結構體構造引數中即可完成建構函式的任務。

golang 建構函式

package main import fmt type test struct func newtest1 a int,b string test func newtest2 a int,b string test type testconstruct func test func constru...

建構函式 拷貝建構函式 賦值建構函式

class和struct很大乙個區別在於,c除了成員的訪問控制許可權,struct中的成員預設是public,而class中的field預設是private class還有乙個special的地方是它有建構函式 constructor。建構函式是class中的一員,和成員變數 其他成員函式一起構成乙...

構造函式呼叫建構函式

題目如下 問下列 的列印結果為0嗎?include stdlib.h include iostream using namespace std struct clscls int main 列印結果是不定的,不一定為0 奇怪的地方在於建構函式中呼叫了自己的另乙個建構函式 我們知道,當定義乙個物件時,...