AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

Go 1.21.0 新增標準庫 Slices 和 Mps 詳解

來源: 責編: 時間:2023-09-28 10:08:05 313觀看
導讀01 、介紹在 Go 語言項目開發中,我們經常會使用 slice 和 map 數據類型,因為 Go 1.18.0 開始支持泛型,所以 slice 的元素可能是任意類型,map 的 key 和 value 也可能是任意類型。Go 1.21.0 新增操作 slice 和 map 數據類

01 、介紹

在 Go 語言項目開發中,我們經常會使用 slice 和 map 數據類型,因為 Go 1.18.0 開始支持泛型,所以 slice 的元素可能是任意類型,map 的 key 和 value 也可能是任意類型。2DE28資訊網——每日最新資訊28at.com

Go 1.21.0 新增操作 slice 和 map 數據類型的標準庫 slices 和 maps,提供了操作 slice 和 map 的泛型函數。2DE28資訊網——每日最新資訊28at.com

本文我們介紹標準庫 slices 和 maps 的使用方式。2DE28資訊網——每日最新資訊28at.com

02 、標準庫 slices

標準庫 slices 提供了許多操作任意類型元素 slice 的函數,可以方便我們實現業務需求。2DE28資訊網——每日最新資訊28at.com

建議感興趣的讀者朋友們閱讀手冊了解關于標準庫 slices[1] 的所有函數的功能。2DE28資訊網——每日最新資訊28at.com

限于篇幅,我們介紹關于查找的函數的使用方式。2DE28資訊網——每日最新資訊28at.com

查找功能的函數 BinarySearch 和 BinarySearchFunc。2DE28資訊網——每日最新資訊28at.com

函數 BinarySearch 示例代碼:2DE28資訊網——每日最新資訊28at.com

func main() { names := []string{"Alice", "Bob", "Vera"} n, found := slices.BinarySearch(names, "Vera") fmt.Println("Vera:", n, found) n, found = slices.BinarySearch(names, "Bill") fmt.Println("Bill:", n, found)}

輸出結果:2DE28資訊網——每日最新資訊28at.com

Vera: 2 trueBill: 1 false

閱讀上面這段代碼,我們定義一個字符串元素類型的切片 names,使用標準庫 slices 提供的二分查找函數 BinarySearch 查找 names 切片中的元素 Vera。2DE28資訊網——每日最新資訊28at.com

該函數返回被查找元素在切片中的索引位置或被查找元素在切片中應該出現的位置,和被查找元素是否真實存在于切片中的一個布爾值。2DE28資訊網——每日最新資訊28at.com

什么是被查找元素在切片中應該出現的位置?示例代碼中,查找 Bill,切片中沒有該元素,按照切片中遞增排序,Bill 應該在 Alice 后面,即索引為 1。2DE28資訊網——每日最新資訊28at.com

需要注意的是,使用函數 BinarySearch 查找元素的切片,切片中的元素必須是按照遞增順序排序。2DE28資訊網——每日最新資訊28at.com

函數 BinarySearchFunc 示例代碼:2DE28資訊網——每日最新資訊28at.com

func main() { type Person struct {  Name string  Age  int } people := []Person{  {"Alice", 55},  {"Bob", 24},  {"Gopher", 13}, } n, found := slices.BinarySearchFunc(people, Person{"Bob", 0}, func(a, b Person) int {  return cmp.Compare(a.Name, b.Name) }) fmt.Println("Bob:", n, found)}

輸出結果:2DE28資訊網——每日最新資訊28at.com

Bob: 1 true

閱讀上面這段代碼,函數 BinarySearchFunc 與 函數 BinarySearch 的功能類似,區別是可以使用自定義比較函數。2DE28資訊網——每日最新資訊28at.com

03 、標準庫 maps

標準庫 maps 提供了許多操作任意類型 key 和 value 的 map 的函數,可以方便我們實現業務需求。2DE28資訊網——每日最新資訊28at.com

建議感興趣的讀者朋友們閱讀手冊了解關于標準庫 maps[2] 的所有函數的功能。2DE28資訊網——每日最新資訊28at.com

限于篇幅,我們介紹關于比較兩個 map 中的 key 和 value 是否相同的函數的使用方式。2DE28資訊網——每日最新資訊28at.com

函數 Equal 示例代碼:2DE28資訊網——每日最新資訊28at.com

func main() { m1 := map[string]int{"lucy": 17, "lily": 18} m2 := map[string]int{"lucy": 17, "lily": 18} m3 := map[string]int{"lucy": 18, "lily": 17} fmt.Println(maps.Equal(m1, m2)) fmt.Println(maps.Equal(m1, m3))}

輸出結果:2DE28資訊網——每日最新資訊28at.com

truefalse

閱讀上面這段代碼,我們定義三個 map 類型的變量,其中 m1 和 m2 的 key 和 value 完全相同,而 m3 的 value 與 m1 和 m2 的 value 不同。2DE28資訊網——每日最新資訊28at.com

使用函數 Equal 比較,分別返回 true 和 false。2DE28資訊網——每日最新資訊28at.com

需要注意的是 map 的 key 和 value 必須都是可比較的類型。2DE28資訊網——每日最新資訊28at.com

函數 EqualFunc 和函數 Equal 的功能類似,區別是使用 eq 比較 value。key 仍然使用比較運算符 == 進行比較。2DE28資訊網——每日最新資訊28at.com

函數 EqualFunc 示例代碼:2DE28資訊網——每日最新資訊28at.com

func main() { m1 := map[int]string{  1:    "one",  10:   "Ten",  1000: "THOUSAND", } m2 := map[int][]byte{  1:    []byte("One"),  10:   []byte("Ten"),  1000: []byte("Thousand"), } eq := maps.EqualFunc(m1, m2, func(v1 string, v2 []byte) bool {  return strings.ToLower(v1) == strings.ToLower(string(v2)) }) fmt.Println(eq)}

輸出結果:2DE28資訊網——每日最新資訊28at.com

true

04、總結

本文我們簡單介紹 Go 1.21.0 新增標準庫 slices 和 maps,標準庫提供了一些操作 slice 和 map 的函數,限于篇幅,分別介紹 slices 的查找功能的函數,和 maps 的比較相同功能的函數。2DE28資訊網——每日最新資訊28at.com

建議讀者朋友們,閱讀文檔,了解標準庫提供的所有函數的功能和使用方式。2DE28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-11850-0.htmlGo 1.21.0 新增標準庫 Slices 和 Mps 詳解

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 作用域 CSS 回來了,你知道嗎?

下一篇: 使用查詢分離后從20s優化到500ms

標簽:
  • 熱門焦點
  • 俄羅斯:將審查iPhone等外國公司設備 保數據安全

    iPhone和特斯拉都屬于在各自領域領頭羊的品牌,推出的產品也也都是數一數二的,但對于一些國家而言,它們的產品可靠性和安全性還是在限制范圍內。近日,俄羅斯聯邦通信、信息技術
  • 紅魔電競平板評測:大屏幕硬實力

    前言:三年的疫情因為要上網課的原因激活了平板市場,如今網課的時代已經過去,大家的生活都恢復到了正軌,這也就意味著,真正考驗平板電腦生存的環境來了。也就是面對著這種殘酷的
  • Redmi Buds 4開箱簡評:才199還有降噪 可以無腦入

    在上個月舉辦的Redmi Note11T Pro系列新機發布會上,除了兩款手機新品之外,Redmi還帶來了兩款TWS真無線藍牙耳機產品,Redmi Buds 4和Redmi Buds 4 Pro,此前我們在Redmi Note11T
  • 5月iOS設備性能榜:M1 M2依舊是榜單前五

    和上個月一樣,沒有新品發布的iOS設備性能榜的上榜設備并沒有什么更替,僅僅只有跑分變化而產生的排名變動,剛剛開始的蘋果WWDC2023,推出的產品也依舊是新款Mac Pro、新款Mac Stu
  • 如何通過Python線程池實現異步編程?

    線程池的概念和基本原理線程池是一種并發處理機制,它可以在程序啟動時創建一組線程,并將它們置于等待任務的狀態。當任務到達時,線程池中的某個線程會被喚醒并執行任務,執行完任
  • 三分鐘白話RocketMQ系列—— 如何發送消息

    我們知道RocketMQ主要分為消息 生產、存儲(消息堆積)、消費 三大塊領域。那接下來,我們白話一下,RocketMQ是如何發送消息的,揭秘消息生產全過程。注意,如果白話中不小心提到相關代
  • 年輕人的“職場羞恥感”,無處不在

    作者:馮曉亭 陶 淘 李 欣 張 琳 馬舒葉來源:燃次元“人在職場,應該選擇什么樣的著裝?”近日,在網絡上,一個與著裝相關的帖子引發關注,在該帖子里,一位在高級寫字樓亞洲金
  • 華為將推出盤古數字人大模型 可幫助用戶12小時完成數字人生成

    在今日舉行的2023年華為云數字文娛AI創新峰會上,華為云全球Marketing與銷售服務總裁石冀琳表示,華為云將在后續推出盤古數字人大模型,可幫助用戶12小
  • 三星Galaxy Z Fold5今日亮相:厚度縮減但仍略顯厚重

    據官方此前宣布,三星將于7月26日也就是今天在韓國首爾舉辦Unpacked活動,屆時將帶來帶來包括Galaxy Buds 3、Galaxy Watch 6、Galaxy Tab S9、Galaxy
Top