欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Golang使用泛型對(duì)數(shù)組進(jìn)行去重的實(shí)現(xiàn)

 更新時(shí)間:2025年02月20日 09:54:37   作者:想喝奶茶_  
本文主要介紹了Golang使用泛型對(duì)數(shù)組進(jìn)行去重的實(shí)現(xiàn),通過(guò)使用類型參數(shù)T和類型約束any,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

背景

要求寫一個(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)文章

  • Go語(yǔ)言hello world實(shí)例

    Go語(yǔ)言hello world實(shí)例

    這篇文章主要介紹了Go語(yǔ)言hello world實(shí)例,本文先是給出了hello world的代碼實(shí)例,然后對(duì)一些知識(shí)點(diǎn)和技巧做了解釋,需要的朋友可以參考下
    2014-10-10
  • 淺析Go 字符串指紋

    淺析Go 字符串指紋

    這篇文章主要介紹了Go 字符串指紋的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)go語(yǔ)言,感興趣的朋友可以了解下
    2020-09-09
  • go mod tidy拉取依賴包bug問(wèn)題及解決

    go mod tidy拉取依賴包bug問(wèn)題及解決

    這篇文章主要介紹了go mod tidy拉取依賴包bug問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • golang gorm 計(jì)算字段和獲取sum()值的實(shí)現(xiàn)

    golang gorm 計(jì)算字段和獲取sum()值的實(shí)現(xiàn)

    這篇文章主要介紹了golang gorm 計(jì)算字段和獲取sum()值的實(shí)現(xiàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • Go項(xiàng)目中的GOPROXY設(shè)置

    Go項(xiàng)目中的GOPROXY設(shè)置

    GOPROXY是Go語(yǔ)言中用于指定模塊代理服務(wù)器的環(huán)境變量,設(shè)置GOPROXY可以通過(guò)操作系統(tǒng)環(huán)境變量、Go命令行參數(shù)或Go環(huán)境配置文件進(jìn)行,感興趣的可以了解一下
    2024-09-09
  • Go語(yǔ)言之重要數(shù)組類型切片(slice)make,append函數(shù)解讀

    Go語(yǔ)言之重要數(shù)組類型切片(slice)make,append函數(shù)解讀

    這篇文章主要介紹了Go語(yǔ)言之重要數(shù)組類型切片(slice)make,append函數(shù)用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • golang編程入門之http請(qǐng)求天氣實(shí)例

    golang編程入門之http請(qǐng)求天氣實(shí)例

    這篇文章主要介紹了golang編程入門之http請(qǐng)求天氣實(shí)例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • Go Java算法之二叉樹(shù)的所有路徑示例詳解

    Go Java算法之二叉樹(shù)的所有路徑示例詳解

    這篇文章主要為大家介紹了Go Java算法之二叉樹(shù)的所有路徑示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • go語(yǔ)言靜態(tài)庫(kù)的編譯和使用方法

    go語(yǔ)言靜態(tài)庫(kù)的編譯和使用方法

    這篇文章主要介紹了go語(yǔ)言靜態(tài)庫(kù)的編譯和使用方法,本文以windows平臺(tái)為例,通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 在Golang中實(shí)現(xiàn)RSA算法的加解密操作詳解

    在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

最新評(píng)論