Go 1.21新功能

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)
}

5. 参考

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yimtcode

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值