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

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

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

1、泛型是什么

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

由于go屬于靜態(tài)強類型語言,例如在比較兩個數(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{},其實就是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新特性對泛型支持詳解的詳細內(nèi)容,更多關(guān)于Go1.18新特性支持泛型的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

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

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

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

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

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

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

    這篇文章主要為大家介紹了Golang?基礎(chǔ)面試題集錦,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    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語言進行數(shù)據(jù)庫查詢并將查詢結(jié)果映射到結(jié)構(gòu)體中,文章詳細講解了結(jié)構(gòu)體字段導(dǎo)出和db標簽的使用方法,并通過示例代碼展示了如何正確地進行數(shù)據(jù)庫查詢和結(jié)果映射
    2024-11-11
  • Go?Redis客戶端使用的兩種對比

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

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

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

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

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

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

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

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

最新評論

湖口县| 饶平县| 嵊泗县| 普格县| 姚安县| 新密市| 江永县| 石屏县| 阳春市| 四川省| 苏州市| 龙陵县| 古田县| 丘北县| 衡水市| 南部县| 读书| 武乡县| 墨竹工卡县| 双牌县| 南投市| 宁化县| 绵阳市| 乌鲁木齐市| 沙洋县| 邳州市| 大关县| 新晃| 东丰县| 闸北区| 垦利县| 耒阳市| 荣昌县| 卢龙县| 辽中县| 盱眙县| 盐城市| 凌源市| 三河市| 嘉义市| 鄂托克旗|