Go?1.21中引入的新包maps和cmp功能作用詳解
Go 1.21的發(fā)布
隨著Go 1.21的發(fā)布,將有兩個(gè)令人興奮的包被引入到核心庫中,這兩個(gè)包專注于操作maps和提供比較功能。讓我們仔細(xì)看看這些包:
1. maps 包
maps
包為處理maps提供實(shí)用工具,使克隆、復(fù)制、刪除和比較map條目變得更加簡單和高效。
函數(shù)
•
Clone
: 克隆一個(gè)map。
m := map[string]int{"one": 1, "two": 2} cloned := maps.Clone(m) fmt.Println(cloned) // Output: map[one:1 two:2]
•
Copy
: 將鍵/值對(duì)從一個(gè)map復(fù)制到另一個(gè)map。
dst := map[string]int{"one": 1} src := map[string]int{"two": 2} maps.Copy(dst, src) // dst is now {"one": 1, "two": 2} fmt.Printf("%#v\n", dst)
•
DeleteFunc
: 根據(jù)給定的函數(shù)從map中刪除鍵/值對(duì)。
m := map[string]int{"one": 1, "two": 2} maps.DeleteFunc(m, func(k string, v int) bool { return v == 2 }) fmt.Println(m) // Output: map[one:1]
•
Equal
和EqualFunc
: 比較兩個(gè)map以檢查它們是否相等。
m1 := map[string]int{"one": 1, "two": 2} m2 := map[string]int{"one": 1, "two": 2} equal := maps.Equal(m1, m2) // true fmt.Println(equal)
2. cmp 包
cmp
包定義了用于比較有序類型的函數(shù)和類型,包括整數(shù)、浮點(diǎn)數(shù)和字符串。該包提供了一種一致的方式來比較值,包括浮點(diǎn)類型的 NaN 值。
函數(shù)
•
Compare
: 比較兩個(gè)有序值并返回 -1、0 或 +1。
result := cmp.Compare(5, 10) // -1 fmt.Println(result) result = cmp.Compare(10, 5) // 1 fmt.Println(result) result = cmp.Compare(5, 5) // 0 fmt.Println(result)
•
Less
: 判斷一個(gè)值是否小于另一個(gè)值。
isLess := cmp.Less(5, 10) // true fmt.Println(isLess) isLess = cmp.Less(10, 5) // false fmt.Println(isLess) isLess = cmp.Less(10, 10) // false fmt.Println(isLess)
類型
•
Ordered
: 一個(gè)約束,允許任何有序類型,包括支持比較運(yùn)算符如<
、<=
、>=
和>
的類型。這個(gè)約束可以與類型參數(shù)一起使用,確保與通用函數(shù)或類型一起使用的類型滿足所需的約束。
func Min[T cmp.Ordered](a, b T) T { if cmp.Less(a, b) { return a } return b } func main() { minInt := Min(3, 5) // minInt is 3 minString := Min("a", "b") // minString is "a" fmt.Println(minInt, minString) }
結(jié)論
在 Go 中引入 maps
和 cmp
包代表了增強(qiáng)該語言核心功能的重要一步。有了這些添加,開發(fā)者現(xiàn)在可以輕松地操作和比較映射和有序類型,進(jìn)一步簡化他們的代碼。通過將常見操作抽象到這些核心包中,Go 繼續(xù)追求開發(fā)體驗(yàn)中的效率、清晰性和穩(wěn)健性。
以上就是Go 1.21中引入的新包maps和cmp功能作用詳解的詳細(xì)內(nèi)容,更多關(guān)于Go1.21 maps cmp包的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Golang使用Decimal庫避免運(yùn)算中精度損失詳細(xì)步驟
decimal是為了解決Golang中浮點(diǎn)數(shù)計(jì)算時(shí)精度丟失問題而生的一個(gè)庫,使用decimal庫我們可以避免在go中使用浮點(diǎn)數(shù)出現(xiàn)精度丟失的問題,下面這篇文章主要給大家介紹了關(guān)于Golang使用Decimal庫避免運(yùn)算中精度損失的相關(guān)資料,需要的朋友可以參考下2023-06-06windows下使用GoLand生成proto文件的方法步驟
本文主要介紹了windows下使用GoLand生成proto文件的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06Golang編程實(shí)現(xiàn)刪除字符串中出現(xiàn)次數(shù)最少字符的方法
這篇文章主要介紹了Golang編程實(shí)現(xiàn)刪除字符串中出現(xiàn)次數(shù)最少字符的方法,涉及Go語言字符串遍歷與運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2017-01-01Golang 獲取文件md5校驗(yàn)的方法以及效率對(duì)比
這篇文章主要介紹了Golang 獲取文件md5校驗(yàn)的方法以及效率對(duì)比,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-05-05Golang實(shí)現(xiàn)根據(jù)某個(gè)特定字段對(duì)結(jié)構(gòu)體的順序進(jìn)行排序
這篇文章主要為大家詳細(xì)介紹了Golang如何實(shí)現(xiàn)根據(jù)某個(gè)特定字段對(duì)結(jié)構(gòu)體的順序進(jìn)行排序,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03