日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)GO教程:Go語言構(gòu)造函數(shù)

Go語言的類型或結(jié)構(gòu)體沒有構(gòu)造函數(shù)的功能,但是我們可以使用結(jié)構(gòu)體初始化的過程來模擬實(shí)現(xiàn)構(gòu)造函數(shù)。

其他編程語言構(gòu)造函數(shù)的一些常見功能及特性如下:

  • 每個(gè)類可以添加構(gòu)造函數(shù),多個(gè)構(gòu)造函數(shù)使用函數(shù)重載實(shí)現(xiàn)。
  • 構(gòu)造函數(shù)一般與類名同名,且沒有返回值。
  • 構(gòu)造函數(shù)有一個(gè)靜態(tài)構(gòu)造函數(shù),一般用這個(gè)特性來調(diào)用父類的構(gòu)造函數(shù)。
  • 對(duì)于 C++ 來說,還有默認(rèn)構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)等。

多種方式創(chuàng)建和初始化結(jié)構(gòu)體——模擬構(gòu)造函數(shù)重載

如果使用結(jié)構(gòu)體描述貓的特性,那么根據(jù)貓的顏色和名字可以有不同種類的貓,那么不同的顏色和名字就是結(jié)構(gòu)體的字段,同時(shí)可以使用顏色和名字構(gòu)造不同種類的貓的實(shí)例,這個(gè)過程可以參考下面的代碼:

type Cat struct {
    Color string
    Name  string
}

func NewCatByName(name string) *Cat {
    return &Cat{
        Name: name,
    }
}

func NewCatByColor(color string) *Cat {
    return &Cat{
        Color: color,
    }
}

代碼說明如下:

  • 第 1 行定義 Cat 結(jié)構(gòu),包含顏色和名字字段。
  • 第 6 行定義用名字構(gòu)造貓結(jié)構(gòu)的函數(shù),返回 Cat 指針。
  • 第 7 行取地址實(shí)例化貓的結(jié)構(gòu)體。
  • 第 8 行初始化貓的名字字段,忽略顏色字段。
  • 第 12 行定義用顏色構(gòu)造貓結(jié)構(gòu)的函數(shù),返回 Cat 指針。

在這個(gè)例子中,顏色和名字兩個(gè)屬性的類型都是字符串,由于Go語言中沒有函數(shù)重載,為了避免函數(shù)名字沖突,使用 NewCatByName() 和 NewCatByColor() 兩個(gè)不同的函數(shù)名表示不同的 Cat 構(gòu)造過程。

帶有父子關(guān)系的結(jié)構(gòu)體的構(gòu)造和初始化——模擬父級(jí)構(gòu)造調(diào)用

黑貓是一種貓,貓是黑貓的一種泛稱,同時(shí)描述這兩種概念時(shí),就是派生,黑貓派生自貓的種類,使用結(jié)構(gòu)體描述貓和黑貓的關(guān)系時(shí),將貓(Cat)的結(jié)構(gòu)體嵌入到黑貓(BlackCat)中,表示黑貓擁有貓的特性,然后再使用兩個(gè)不同的構(gòu)造函數(shù)分別構(gòu)造出黑貓和貓兩個(gè)結(jié)構(gòu)體實(shí)例,參考下面的代碼:

type Cat struct {
    Color string
    Name  string
}

type BlackCat struct {
    Cat  // 嵌入Cat, 類似于派生
}

// “構(gòu)造基類”
func NewCat(name string) *Cat {
    return &Cat{
        Name: name,
    }
}

// “構(gòu)造子類”
func NewBlackCat(color string) *BlackCat {
    cat := &BlackCat{}
    cat.Color = color
    return cat
}

代碼說明如下:

  • 第 6 行,定義 BlackCat 結(jié)構(gòu),并嵌入了 Cat 結(jié)構(gòu)體,BlackCat 擁有 Cat 的所有成員,實(shí)例化后可以自由訪問 Cat 的所有成員。
  • 第 11 行,NewCat() 函數(shù)定義了 Cat 的構(gòu)造過程,使用名字作為參數(shù),填充 Cat 結(jié)構(gòu)體。
  • 第 18 行,NewBlackCat() 使用 color 作為參數(shù),構(gòu)造返回 BlackCat 指針。
  • 第 19 行,實(shí)例化 BlackCat 結(jié)構(gòu),此時(shí) Cat 也同時(shí)被實(shí)例化。
  • 第 20 行,填充 BlackCat 中嵌入的 Cat 顏色屬性,BlackCat 沒有任何成員,所有的成員都來自于 Cat。

這個(gè)例子中,Cat 結(jié)構(gòu)體類似于面向?qū)ο笾械摹盎悺保珺lackCat 嵌入 Cat 結(jié)構(gòu)體,類似于面向?qū)ο笾械摹芭缮保瑢?shí)例化時(shí),BlackCat 中的 Cat 也會(huì)一并被實(shí)例化。

總之,Go語言中沒有提供構(gòu)造函數(shù)相關(guān)的特殊機(jī)制,用戶根據(jù)自己的需求,將參數(shù)使用函數(shù)傳遞到結(jié)構(gòu)體構(gòu)造參數(shù)中即可完成構(gòu)造函數(shù)的任務(wù)。


網(wǎng)站標(biāo)題:創(chuàng)新互聯(lián)GO教程:Go語言構(gòu)造函數(shù)
文章源于:http://m.5511xx.com/article/dhscgig.html