在这篇全面的帖子中,我将深入研究地图和 cmp 包装的复杂性。我将阐明出色的功能,这些功能在开发GO应用程序时已智能合并,以增强您的日常体验。请继续关注宝贵的见解和实用技巧!
地图
m := map[string]string{
"name": "Pedro",
"age": "20",
}
m2 := map[string]string{
"name": "Pedro",
"age": "20",
}
m3 := make(map[string]string)
r := maps.Equal(m, m2)
r2 := maps.EqualFunc(m, m2, func(s1, s2 string) bool {
return m["name"] == m2["name"] && m["age"] == m2["age"]
})
fmt.Println("Equal: ", r)
fmt.Println("Equal Func: ", r2)
cloned := maps.Clone[map[string]string](m)
maps.Copy[map[string]string](m3, m)
fmt.Printf("Cloned: %+v: \n", cloned)
fmt.Printf("Copied: %+v: \n", m3)
在提出的代码段中,我们可以观察到一些非常有用的地图功能。当使用复制时,它会生成所选地图的浅克隆,当使用 clone 时,它会生成地图的完整副本。当目的是在保留原始数据的完整性的同时复制地图变量时,这变得非常有利。
。上一个代码的结果是:
Equal: true
Equal Func: true
Cloned: map[age:20 name:Pedro]
Copied: map[age:20 name:Pedro]
您也可以检查代码here
CMP
在文档中,它很简单,如:
软件包CMP提供与比较有序值有关的类型和功能。
至关重要的是,CMP专门使用ordered types constraints运行,为数学操作增加了一层便利性。
这是CMP软件包中可用的两个功能的代码
var num, num2, num3 int64 = 1, 2, 1
var str, str2, str3 = "ab", "abc", "ab"
r := cmp.Compare[int64](num, num2)
r2 := cmp.Compare[int64](num, num3)
r3 := cmp.Less[string](str, str2)
r4 := cmp.Less[string](str, str3)
fmt.Println("Num is less than Num2: ", r <= 0)
fmt.Println("Num is equal to Num3: ", r2 >= 0)
fmt.Println("Num2 is greater than Num: ", r2 >= 0)
fmt.Println("")
fmt.Println("Str is less than Str2: ", r3)
fmt.Println("Str is less than Str3 ", r4)
结果
Num is less than Num2: true
Num is equal to Num3: true
Num2 is greater than Num: true
Str is less than Str2: true
Str is less than Str3 false
使用 cmp.compare 它将返回-1,0,1,这意味着从文档中:
-1如果x小于y,
0如果x等于y,
+1如果x大于y。
使用 cmp.less 时,它会评估第一个值是小于还是等于第二值。该效用证明对应对算法挑战非常有益。
您可以检查代码here
这就是这篇文章的结论。在下一部分中,我们将在日志/口号和切片软件包上进行讨论。敬请期待!