Go1.18新特性對(duì)泛型支持詳解
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),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02淺析Go中函數(shù)的健壯性,panic異常處理和defer機(jī)制
這篇文章主要為大家詳細(xì)介紹了Go中函數(shù)的健壯性,panic異常處理和defer機(jī)制的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-10-10golang 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-09SingleFlight模式的Go并發(fā)編程學(xué)習(xí)
這篇文章主要為大家介紹了SingleFlight模式的Go并發(fā)編程學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04go語言使用pipe讀取子進(jìn)程標(biāo)準(zhǔn)輸出的方法
這篇文章主要介紹了go語言使用pipe讀取子進(jìn)程標(biāo)準(zhǔn)輸出的方法,實(shí)例分析了Go語言針對(duì)進(jìn)程操作的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03