Go 1.21新功能
1. min/max/clear
min
func TestMin(t *testing.T) {
m1 := min(1, 2, 3) // 1
m2 := min(1, min(2, 3)) // 1
s3 := min("a", "b", "c") // a
t.Log(m1, m2, s3)
}
max
func TestMin(t *testing.T) {
m1 := max(1, 2, 3) // 3
m2 := max(1, max(2, 3)) // 3
s3 := max("a", "b", "c") // c
t.Log(m1, m2, s3)
}
clear
如果map或slice为nil不会产生任何操作。
func TestClear(t *testing.T) {
m1 := map[string]int{"a": 1, "b": 2, "c": 3} // map[]
s2 := []int{1, 2, 3, 4} // [0 0 0 0]
clear(m1)
clear(s2)
t.Log(m1, s2)
}
2. slices package
下面例举部分用法,更多请参考slices package。
func TestSlices(t *testing.T) {
s := []int{1, 2, 3, 4}
// min
m := slices.Min(s) // 1
t.Log(m)
// max
m = slices.Max(s) // 4
t.Log(m)
// binary search
i, ok := slices.BinarySearch(s, 3)
t.Log(i, ok)
// equal
ok = slices.Equal(s, []int{1, 2, 3, 4}) // true
t.Log(ok)
ok = slices.Equal(s, []int{4, 3, 2, 1}) // false
t.Log(ok)
// delete
newS := slices.Delete(s, 0, 2) // [3 4]
t.Log(newS)
}
3. maps package
下面例举部分用法,更多请参考maps package。
func TestMaps(t *testing.T) {
m := map[string]int{"a": 1, "b": 2, "c": 3}
// clone
m2 := maps.Clone(m) // map[a:1 b:2 c:3]
t.Log(m2)
// equal
e := maps.Equal(m, map[string]int{"b": 2, "c": 3, "a": 1}) // true
t.Log(e)
}
4. cmp package
下面例举部分用法,更多请参考cmp package。
func TestCmp(t *testing.T) {
// less
l := cmp.Less(1, 2) // true
t.Log(l)
// Compare
c := cmp.Compare(1, 2)
t.Log(c)
}