Go1.18 泛型约束语法确定,可通过新 playground 验证

blov · · 1589 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

大家好,我是程序员幽鬼。 Go1.18 功能已经完全确认,代码已经冻结,目前还有 100+ issue 要处理。 ![go1.18-01.png](https://static.studygolang.com/211112/c0168c55e288edcd64320e808543cfdc.png) 今天发现,泛型中约束语法又变了,前段时间还是这样的: ```go type Addable interface { type int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, uintptr, float32, float64, complex64, complex128, string } ``` 现在改为这样了: ```go type Addable interface { int | int8 | int16 | int32 | int64 | uint | uint8 | uint16 | uint32 | uint64 | uintptr | float32 | float64 | complex64 | complex128 | string } ``` 所以这是最终的方案。 为了方便大家试验 tip 版本,Go 官方终于做了一件事,那就是新开一个 playground 支持 tip 版本。这样大家可以不用下载 tip 版本就可以试用 tip 的相关功能,这就是 <https://gotipplay.golang.org/>,请自行解决访问问题。 忍不住赶紧试用了一下: ```go package main import ( "fmt" "runtime" ) type Addable interface { int | int8 | int16 | int32 | int64 | uint | uint8 | uint16 | uint32 | uint64 | uintptr | float32 | float64 | complex64 | complex128 | string } func Add[T Addable](a, b T) T { return a + b } func main() { fmt.Println(runtime.Version()) fmt.Println(Add(1, 2)) fmt.Println(Add(2.1, 3.2)) fmt.Println(Add("程序员", "幽鬼")) } ``` > <https://gotipplay.golang.org/p/vtXyZInsmRk> 输出: ```bash devel go1.18-8c73f80400 Thu Nov 11 15:34:02 2021 +0000 3 5.300000000000001 程序员幽鬼 ``` 后续大家试验 tip 新功能可以通过它来进行,方便快捷。 ![](https://static.studygolang.com/211010/eab4048adca8ab8cbb472c0fec2e77e5.png)

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

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

1589 次点击  
加入收藏 微博
1 回复  |  直到 2021-11-18 21:01:06
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传