最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go1.18新特性對泛型支持詳解

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

1、泛型是什么

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

由于go屬于靜態(tài)強(qiáng)類型語言,例如在比較兩個數(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ù)后用中括號聲明T可能出現(xiàn)的類型,中間用符號|分隔。

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

2、泛型類型的定義

2.1、聲明一個自定義類型

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

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

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

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

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

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

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

2.3、泛型中的~符號是什么

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

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

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

相關(guān)文章

  • Go項(xiàng)目的目錄結(jié)構(gòu)詳解

    Go項(xiàng)目的目錄結(jié)構(gòu)詳解

    這篇文章主要介紹了Go項(xiàng)目的目錄結(jié)構(gòu),對基礎(chǔ)目錄做了講解,對項(xiàng)目開發(fā)中的其它目錄也一并做了介紹,需要的朋友可以參考下
    2014-10-10
  • linux下通過go語言獲得系統(tǒng)進(jìn)程cpu使用情況的方法

    linux下通過go語言獲得系統(tǒng)進(jìn)程cpu使用情況的方法

    這篇文章主要介紹了linux下通過go語言獲得系統(tǒng)進(jìn)程cpu使用情況的方法,實(shí)例分析了Go語言使用linux的系統(tǒng)命令ps來分析cpu使用情況的技巧,需要的朋友可以參考下
    2015-03-03
  • Golang?基礎(chǔ)面試題集錦

    Golang?基礎(chǔ)面試題集錦

    這篇文章主要為大家介紹了Golang?基礎(chǔ)面試題集錦,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • 在go文件服務(wù)器加入http.StripPrefix的用途介紹

    在go文件服務(wù)器加入http.StripPrefix的用途介紹

    這篇文章主要介紹了在go文件服務(wù)器加入http.StripPrefix的用途介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Go處理json數(shù)據(jù)方法詳解(Marshal,UnMarshal)

    Go處理json數(shù)據(jù)方法詳解(Marshal,UnMarshal)

    這篇文章主要介紹了Go處理json數(shù)據(jù)的方法詳解,Marshal(),UnMarshal(),需要的朋友可以參考下
    2022-04-04
  • Go 數(shù)據(jù)庫查詢與結(jié)構(gòu)體映射的示例詳解

    Go 數(shù)據(jù)庫查詢與結(jié)構(gòu)體映射的示例詳解

    本文主要介紹了如何使用Go語言進(jìn)行數(shù)據(jù)庫查詢并將查詢結(jié)果映射到結(jié)構(gòu)體中,文章詳細(xì)講解了結(jié)構(gòu)體字段導(dǎo)出和db標(biāo)簽的使用方法,并通過示例代碼展示了如何正確地進(jìn)行數(shù)據(jù)庫查詢和結(jié)果映射
    2024-11-11
  • Go?Redis客戶端使用的兩種對比

    Go?Redis客戶端使用的兩種對比

    這篇文章主要為大家介紹了Go?Redis客戶端使用對比詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Go語言自定義linter靜態(tài)檢查工具

    Go語言自定義linter靜態(tài)檢查工具

    這篇文章主要介紹了Go語言自定義linter靜態(tài)檢查工具,Go語言是一門編譯型語言,編譯器將高級語言翻譯成機(jī)器語言,會先對源代碼做詞法分析,詞法分析是將字符序列轉(zhuǎn)換為Token序列的過程,文章詳細(xì)介紹需要的小伙伴可以參考一下
    2022-05-05
  • Go語言之Goroutine與信道異常處理

    Go語言之Goroutine與信道異常處理

    這篇文章主要給大家介紹得是Go語言Goroutine與信道異常處理,Goroutine 之間通信是通過 channel 通信的,想詳細(xì)了解得小伙伴跟小編一起來學(xué)習(xí)下面文章內(nèi)容吧
    2021-10-10
  • golang語言中for循環(huán)語句用法實(shí)例

    golang語言中for循環(huán)語句用法實(shí)例

    這篇文章主要介紹了golang語言中for循環(huán)語句用法,實(shí)例分析了for循環(huán)遍歷的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01

最新評論

和硕县| 潢川县| 庆云县| 蒲江县| 新丰县| 徐闻县| 禹城市| 霍山县| 安平县| 陕西省| 西畴县| 临汾市| 湟源县| 鹤峰县| 永和县| 晋江市| 策勒县| 铁岭县| 德清县| 钦州市| 建湖县| 上杭县| 涟源市| 伊吾县| 高唐县| 信宜市| 仁化县| 彭山县| 丽江市| 轮台县| 金塔县| 海伦市| 双辽市| 西青区| 临泽县| 鸡泽县| 法库县| 英吉沙县| 常宁市| 南通市| 乌审旗|