Go1.21.0 发布了

polaris · 2023-08-09 21:18:35 · 3412 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2023-08-09 21:18:35 的主题,其中的信息可能已经有所发展或是发生改变。

Go1.21.0是2023年8月8日发布的Go语言的最新版本,它带来了一些语言和工具的变化。

  • min和max内置函数:Go1.21.0增加了两个新的内置函数min和max,用来对任意可比较的有序类型进行最小值或最大值的操作。min和max函数可以接受一个或多个参数,并返回其中的最小值或最大值。如果参数是浮点数并且包含NaN,min和max函数会返回NaN。
  • clear预定义函数:Go1.21.0增加了一个clear预定义函数用来做切片和map的clear操作。对于切片,clear函数会将所有元素设置为零值,但保持切片的长度和容量不变。对于map,clear函数会删除所有键值对,得到一个空map。clear函数的使用示例在[这里]展示。
  • 改变panic(nil)语义:Go1.21.0改变了panic(nil)的语义,使得recover函数在捕获到panic(nil)时不再返回nil,而是返回一个特定的错误类型PanicNilError。这样可以避免开发者误以为没有发生panic,而继续执行正常逻辑。
  • 新增标准库:slices、maps、slog 等 :这几个库正式进入标准库了。

还有更多其他特性或变化,可以通过官方文档了解:https://go.dev/doc/go1.21

可以官方方式试用,也可以在 Go语言中文网下载最新版:https://studygolang.com/dl


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3412 次点击  
加入收藏 微博
3 回复  |  直到 2023-08-25 13:51:00
khan-lau
khan-lau · #1 · 2年之前

比较坑的是 context.

func main() {
    ctx, cancel := context.WithCancel(context.Background())
    newCtx := context.WithoutCancel(ctx)
    cancel()
    <-ctx.Done() // ok, ctx has cancled.
    <-newCtx.Done() // error: dead lock!
}

从ctx复制了一份newCtx , 还去掉了cancel, 然后newctx就不会关联ctx的cancel

GGXXLL
GGXXLL · #2 · 2年之前

context.WithoutCancel, 它不就是为了取消 cancel 关联的么,为啥坑了

buguang01
buguang01 · #3 · 2年之前

不知道为什么,我安装了go1.21后,编译的部分程序会出现无法启动的问题。

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传