Golang使用泛型對(duì)數(shù)組進(jìn)行去重的實(shí)現(xiàn)
背景
要求寫一個(gè)方法,返回去重后的數(shù)組。數(shù)組的類型可能是int64
,也可能是string
,或是其他類型。
如果區(qū)分類型的話,每增加一個(gè)新的類型都需要重新寫一個(gè)方法。
示例代碼
//對(duì)int64數(shù)組進(jìn)行去重 func DeDuplicateInt64Slice(array []int64) []int64 { mp := make(map[int64]struct{}) idx := 0 for _, value := range array { if _, ok := mp[value]; ok { continue } array[idx] = value idx = idx + 1 mp[value] = struct{}{} } return array[:idx] } //對(duì)string數(shù)組進(jìn)行去重 func DeDuplicateStringSlice(array []string) []string { mp := make(map[string]struct{}) idx := 0 for _, value := range array { if _, ok := mp[value]; ok { continue } array[idx] = value idx = idx + 1 mp[value] = struct{}{} } return array[:idx] }
使用泛型實(shí)現(xiàn)后的代碼
//對(duì)數(shù)組去重 func DeDuplicateSlice[T any](array []T) []T { mp := make(map[any]struct{}) idx := 0 for _, value := range array { if _, ok := mp[value]; ok { continue } array[idx] = value idx = idx + 1 mp[value] = struct{}{} } return array[:idx] }
其中:
T 是類型參數(shù),在函數(shù)體里的用法跟其他數(shù)據(jù)類型(如int
一樣)
any 是類型約束,這里的any可以是任何類型,也就是沒(méi)有約束
// any is an alias for interface{} and is equivalent to interface{} in all ways. type any = interface{}
到此這篇關(guān)于Golang使用泛型對(duì)數(shù)組進(jìn)行去重的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Golang數(shù)組去重內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
golang gorm 計(jì)算字段和獲取sum()值的實(shí)現(xiàn)
這篇文章主要介紹了golang gorm 計(jì)算字段和獲取sum()值的實(shí)現(xiàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12Go語(yǔ)言之重要數(shù)組類型切片(slice)make,append函數(shù)解讀
這篇文章主要介紹了Go語(yǔ)言之重要數(shù)組類型切片(slice)make,append函數(shù)用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09golang編程入門之http請(qǐng)求天氣實(shí)例
這篇文章主要介紹了golang編程入門之http請(qǐng)求天氣實(shí)例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08在Golang中實(shí)現(xiàn)RSA算法的加解密操作詳解
RSA 是一種非對(duì)稱加密算法,廣泛使用于數(shù)據(jù)的安全傳輸,crypto/rsa 是 Golang 中實(shí)現(xiàn)了 RSA 算法的一個(gè)標(biāo)準(zhǔn)庫(kù),提供了生成公私鑰對(duì)、加解密數(shù)據(jù)、簽名和驗(yàn)簽等功能,本文給大家介紹了在Golang中實(shí)現(xiàn)RSA算法的加解密操作,需要的朋友可以參考下2023-12-12