Go?1.21中引入的新包maps和cmp功能作用詳解
Go 1.21的發(fā)布
隨著Go 1.21的發(fā)布,將有兩個令人興奮的包被引入到核心庫中,這兩個包專注于操作maps和提供比較功能。讓我們仔細看看這些包:
1. maps 包
maps
包為處理maps提供實用工具,使克隆、復(fù)制、刪除和比較map條目變得更加簡單和高效。
函數(shù)
•
Clone
: 克隆一個map。
m := map[string]int{"one": 1, "two": 2} cloned := maps.Clone(m) fmt.Println(cloned) // Output: map[one:1 two:2]
•
Copy
: 將鍵/值對從一個map復(fù)制到另一個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中刪除鍵/值對。
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
: 比較兩個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ù)、浮點數(shù)和字符串。該包提供了一種一致的方式來比較值,包括浮點類型的 NaN 值。
函數(shù)
•
Compare
: 比較兩個有序值并返回 -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
: 判斷一個值是否小于另一個值。
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
: 一個約束,允許任何有序類型,包括支持比較運算符如<
、<=
、>=
和>
的類型。這個約束可以與類型參數(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
包代表了增強該語言核心功能的重要一步。有了這些添加,開發(fā)者現(xiàn)在可以輕松地操作和比較映射和有序類型,進一步簡化他們的代碼。通過將常見操作抽象到這些核心包中,Go 繼續(xù)追求開發(fā)體驗中的效率、清晰性和穩(wěn)健性。
以上就是Go 1.21中引入的新包maps和cmp功能作用詳解的詳細內(nèi)容,更多關(guān)于Go1.21 maps cmp包的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
windows下使用GoLand生成proto文件的方法步驟
本文主要介紹了windows下使用GoLand生成proto文件的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06Golang編程實現(xiàn)刪除字符串中出現(xiàn)次數(shù)最少字符的方法
這篇文章主要介紹了Golang編程實現(xiàn)刪除字符串中出現(xiàn)次數(shù)最少字符的方法,涉及Go語言字符串遍歷與運算相關(guān)操作技巧,需要的朋友可以參考下2017-01-01Golang實現(xiàn)根據(jù)某個特定字段對結(jié)構(gòu)體的順序進行排序
這篇文章主要為大家詳細介紹了Golang如何實現(xiàn)根據(jù)某個特定字段對結(jié)構(gòu)體的順序進行排序,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03