亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Go1.18新特性對(duì)泛型支持詳解

 更新時(shí)間:2022年06月15日 11:13:25   作者:不習(xí)慣的習(xí)慣變成習(xí)慣  
這篇文章主要為大家介紹了Go1.18新特性對(duì)泛型支持詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

1、泛型是什么

Go1.18增加了對(duì)泛型的支持,泛型是一種獨(dú)立于使用的特定類型編寫代碼的方式?,F(xiàn)在可以編寫函數(shù)和類型適用于一組類型集合的任何一種。泛型生命周期只在編譯期,旨在開發(fā)中減少重復(fù)代碼的編寫。

由于go屬于靜態(tài)強(qiáng)類型語言,例如在比較兩個(gè)數(shù)的大小時(shí),沒有泛型的時(shí)候,僅僅只是傳入類型不一樣,我們就要再復(fù)制一份一樣的函數(shù),如果有了泛型就可以減少這類代碼。

//int
func GetMaxNumber(a, b int) int {
    if a > b {
        return a
    }
    return b
}
//int32
func GetMaxNumber(a, b int32) int32 {
    if a > b {
        return a
    }
    return b
}

go1.18后引入泛型后,只需要再函數(shù)后用中括號(hào)聲明T可能出現(xiàn)的類型,中間用符號(hào)|分隔。

//使用泛型
func GetMaxNumber [T int | int32 ](a, b T) T {
    if a > b {
        return a
    }
    return b
}

2、泛型類型的定義

2.1、聲明一個(gè)自定義類型

跟聲明接口一樣,使用 type x interface{}關(guān)鍵字來聲明,不過里面的成員方法不再是方法,而是類型,類型之間用符號(hào)|隔開。

成員類型支持go中所有的基本類型。

type MyT interface {
    int | int8 | int16 | int32 | int64 | []int | map[int]int | struct{}
}

2.2、內(nèi)置的泛型類型any和comparable

any:表示go里面所有的內(nèi)置基本類型,等價(jià)于interface{},其實(shí)就是interface{}的別名。

//這里的any并非泛型的約束,而是類型
func test(x any) any {
    return x
}

comparable: 表示go里面所有的內(nèi)置的可比較類型。

2.3、泛型中的~符號(hào)是什么

符號(hào)~都是與類型一起出現(xiàn)的,用來表示支持該類型的衍生類型

//int的衍生類型
type intA int
type intB  = int
//不僅支持int,還支持int的衍生類型intA和intB
type Myint interface {
    ~int | float
}

以上就是Go1.18新特性對(duì)泛型支持詳解的詳細(xì)內(nèi)容,更多關(guān)于Go1.18新特性支持泛型的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Gin+Gorm實(shí)現(xiàn)CRUD的實(shí)戰(zhàn)

    Gin+Gorm實(shí)現(xiàn)CRUD的實(shí)戰(zhàn)

    本文主要介紹了Gin+Gorm實(shí)現(xiàn)CRUD的實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Golang匯編之控制流深入分析講解

    Golang匯編之控制流深入分析講解

    這篇文章主要介紹了Golang匯編之控制流,程序執(zhí)行的流程主要有順序、分支和循環(huán)幾種執(zhí)行流程,本節(jié)主要討論如何將Go語言的控制流比較直觀地轉(zhuǎn)譯為匯編程序,或者說如何以匯編思維來編寫Go語言代碼,感興趣的同學(xué)可以參考下文
    2023-05-05
  • Go語言中如何通過方法為類型添加行為

    Go語言中如何通過方法為類型添加行為

    這篇文章主要介紹了Go語言中如何通過方法為類型添加行為的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 淺析Go中函數(shù)的健壯性,panic異常處理和defer機(jī)制

    淺析Go中函數(shù)的健壯性,panic異常處理和defer機(jī)制

    這篇文章主要為大家詳細(xì)介紹了Go中函數(shù)的健壯性,panic異常處理和defer機(jī)制的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-10-10
  • Go語言框架Beego項(xiàng)目搭建的方法步驟

    Go語言框架Beego項(xiàng)目搭建的方法步驟

    這篇文章主要介紹了Go語言框架Beego項(xiàng)目搭建的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • 詳解go語言中type關(guān)鍵詞的幾種使用

    詳解go語言中type關(guān)鍵詞的幾種使用

    這篇文章主要介紹了詳解go語言中type的幾種使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • golang Goroutine超時(shí)控制的實(shí)現(xiàn)

    golang Goroutine超時(shí)控制的實(shí)現(xiàn)

    日常開發(fā)中我們大概率會(huì)遇到超時(shí)控制的場(chǎng)景,比如一個(gè)批量耗時(shí)任務(wù)、網(wǎng)絡(luò)請(qǐng)求等,本文主要介紹了golang Goroutine超時(shí)控制的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09
  • Go語言中定時(shí)任務(wù)庫Cron使用方法介紹

    Go語言中定時(shí)任務(wù)庫Cron使用方法介紹

    cron的意思計(jì)劃任務(wù),說白了就是定時(shí)任務(wù)。我和系統(tǒng)約個(gè)時(shí)間,你在幾點(diǎn)幾分幾秒或者每隔幾分鐘跑一個(gè)任務(wù)(job),今天通過本文給大家介紹下Go語言中定時(shí)任務(wù)庫Cron使用方法,感興趣的朋友一起看看吧
    2022-03-03
  • SingleFlight模式的Go并發(fā)編程學(xué)習(xí)

    SingleFlight模式的Go并發(fā)編程學(xué)習(xí)

    這篇文章主要為大家介紹了SingleFlight模式的Go并發(fā)編程學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • go語言使用pipe讀取子進(jìn)程標(biāo)準(zhǔn)輸出的方法

    go語言使用pipe讀取子進(jìn)程標(biāo)準(zhǔn)輸出的方法

    這篇文章主要介紹了go語言使用pipe讀取子進(jìn)程標(biāo)準(zhǔn)輸出的方法,實(shí)例分析了Go語言針對(duì)進(jìn)程操作的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03

最新評(píng)論