Go1.18新特性對泛型支持詳解
1、泛型是什么
Go1.18增加了對泛型的支持,泛型是一種獨(dú)立于使用的特定類型編寫代碼的方式。現(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ù)后用中括號聲明T可能出現(xiàn)的類型,中間用符號|分隔。
//使用泛型
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)鍵字來聲明,不過里面的成員方法不再是方法,而是類型,類型之間用符號|隔開。
成員類型支持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、泛型中的~符號是什么
符號~都是與類型一起出現(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)文章
Gin+Gorm實(shí)現(xiàn)CRUD的實(shí)戰(zhàn)
本文主要介紹了Gin+Gorm實(shí)現(xiàn)CRUD的實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(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)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-10-10
golang Goroutine超時(shí)控制的實(shí)現(xiàn)
日常開發(fā)中我們大概率會遇到超時(shí)控制的場景,比如一個(gè)批量耗時(shí)任務(wù)、網(wǎng)絡(luò)請求等,本文主要介紹了golang Goroutine超時(shí)控制的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-09-09
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)輸出的方法,實(shí)例分析了Go語言針對進(jìn)程操作的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03

