自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Go 泛型:Maps 包正式釋出,現(xiàn)在可用!

開(kāi)發(fā) 后端
給大家?guī)?lái)一個(gè)關(guān)于泛型的新消息,那就是:在幾天前,Go 泛型的配套標(biāo)準(zhǔn)庫(kù) golang.org/x/exp/maps 包已經(jīng)正式提交,放出來(lái)了,可以使用。

[[437742]]

本文轉(zhuǎn)載自微信公眾號(hào)「腦子進(jìn)煎魚(yú)了」,作者 陳煎魚(yú)   。轉(zhuǎn)載本文請(qǐng)聯(lián)系腦子進(jìn)煎魚(yú)了公眾號(hào)。

大家好,我是煎魚(yú)。

給大家?guī)?lái)一個(gè)關(guān)于泛型的新消息,那就是:在幾天前,Go 泛型的配套標(biāo)準(zhǔn)庫(kù) golang.org/x/exp/maps 包已經(jīng)正式提交,放出來(lái)了,可以使用。

如下圖:

cs.opensource.google

包代碼如下:

  1. package maps 
  2.  
  3. func Keys[M ~map[K]V, K comparable, V any](m M) []K { 
  4.  r := make([]K, 0, len(m)) 
  5.  for k := range m { 
  6.   r = append(r, k) 
  7.  } 
  8.  return r 
  9.  
  10. func Values[M ~map[K]V, K comparable, V any](m M) []V { 
  11.  r := make([]V, 0, len(m)) 
  12.  for _, v := range m { 
  13.   r = append(r, v) 
  14.  } 
  15.  return r 
  16.  
  17. func Equal[M1, M2 ~map[K]V, K, V comparable](m1 M1, m2 M2) bool { 
  18.  if len(m1) != len(m2) { 
  19.   return false 
  20.  } 
  21.  for k, v1 := range m1 { 
  22.   if v2, ok := m2[k]; !ok || v1 != v2 { 
  23.    return false 
  24.   } 
  25.  } 
  26.  return true 
  27.  
  28. func EqualFunc[M1 ~map[K]V1, M2 ~map[K]V2, K comparable, V1, V2 any](m1 M1, m2 M2, eq func(V1, V2) bool) bool { 
  29.  if len(m1) != len(m2) { 
  30.   return false 
  31.  } 
  32.  for k, v1 := range m1 { 
  33.   if v2, ok := m2[k]; !ok || !eq(v1, v2) { 
  34.    return false 
  35.   } 
  36.  } 
  37.  return true 
  38.  
  39. func DeleteFunc[M ~map[K]V, K comparable, V any](m M, del func(K, V) bool) { 
  40.  for k, v := range m { 
  41.   if del(k, v) { 
  42.    delete(m, k) 
  43.   } 
  44.  } 
  • Keys:返回 map 的鍵值內(nèi)容,鍵值將以不確定的順序出現(xiàn)。
  • Values:返回 map 的值,值將以不確定的順序出現(xiàn)。
  • Equal:檢查兩個(gè)地圖是否包含相同的鍵/值對(duì),內(nèi)部會(huì)使用 == 來(lái)比較數(shù)值。
  • EqualFunc:EqualFunc與 Equal 方法類(lèi)似,但使用閉包方法來(lái)比較數(shù)值,鍵值仍然用 == 來(lái)比較。
  • DeleteFunc:刪除 map 中閉包方法返回 true 的任何鍵/值對(duì)。
  1. func Clear[M ~map[K]V, K comparable, V any](m M) { 
  2.  for k := range m { 
  3.   delete(m, k) 
  4.  } 
  5.  
  6. func Clone[M ~map[K]V, K comparable, V any](m M) M { 
  7.  r := make(M, len(m)) 
  8.  for k, v := range m { 
  9.   r[k] = v 
  10.  } 
  11.  return r 
  12.  
  13. func Copy[M ~map[K]V, K comparable, V any](dst, src M) { 
  14.  for k, v := range src { 
  15.   dst[k] = v 
  16.  } 

Clear:清除從 map 中刪除所有條目,使之為空。

Clone:返回一個(gè) map 的副本,這是一個(gè)淺層克隆,新拷貝出來(lái)的的鍵和值使用普通的賦值來(lái)設(shè)置。

Copy:復(fù)制 src 中的所有鍵/值對(duì),并將其加入 dst。當(dāng) src 中的一個(gè)鍵已經(jīng)存在于 dst 中時(shí),dst 中的值將被與 src 中的鍵相關(guān)的值所覆蓋。

 

本次 Go 泛型庫(kù) maps 的更新,主要包含了泛型最新的特性的迭代,也就是 “近似元素”,源碼地址:https://cs.opensource.google/go/x/exp/+/master:maps/maps.go。

 

責(zé)任編輯:武曉燕 來(lái)源: 腦子進(jìn)煎魚(yú)了
相關(guān)推薦

2021-12-05 23:45:23

Go泛型Maps

2021-08-09 10:36:20

GoSlices Maps

2021-12-15 10:23:56

Go 1.18 Bet語(yǔ)言泛型

2021-11-27 22:20:13

SlicesGo泛型

2021-09-29 18:17:30

Go泛型語(yǔ)言

2021-01-14 05:20:48

Go語(yǔ)言泛型

2022-03-18 18:00:00

編程語(yǔ)言泛型支持模糊測(cè)試

2020-11-24 13:05:35

Go語(yǔ)言泛型

2024-10-28 00:40:49

Go語(yǔ)法版本

2022-04-28 12:00:34

Go泛型版排序

2022-03-28 13:34:26

Go泛型部署泛型

2023-11-03 14:02:04

Go切片泛型庫(kù)

2023-11-29 08:19:45

Go泛型缺陷

2024-12-30 11:05:28

泛型Go類(lèi)型別名

2022-04-15 09:55:59

Go 泛型Go 程序函數(shù)

2023-05-05 08:51:18

Go語(yǔ)言泛型

2022-03-29 11:48:40

Go泛型測(cè)試

2021-11-01 12:41:39

Go

2021-12-30 18:34:29

緩存GoSinglefligh

2021-12-28 07:20:44

泛型Go場(chǎng)景
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)