Golang Go语言 哇靠,1.18 release!

我先更为敬了🐶
终于出来了,不容易
Golang Go语言 哇靠,1.18 release!

46 回复

赶紧冲

更多关于Golang Go语言 哇靠,1.18 release!的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


发现 goland 对泛型支持有 bug ,能正常编译的代码报错,先降回 1.17 了

可以啊

#4 哎,试了一下现在这个写法的确可以。想当然了。编辑了一下,现在应该能触发 goland 的 bug 了

type alias 或者 type definition 都能触发

sogo 我用的 vscode 你 gomod 指定 1.18 了么?

对,不指定 1.18 也编译不了…

终于发了,看着 milestone 一点点到底

范型也太丑了

本来大项目的代码就不容易阅读,这下子到处抽象更晦涩了

起床更

就是 1.18 才支持泛型的,正常,idea 2022.1eap 上没复现 bug

升级完成

goland 还有些 bug, 这里放在 goland 里会报红 但是我能编译
type Binding[S types.Stringer, P any] interface {
Name() S
Bind(P, any) error
}

type testBinding[S types.Stringer, P *http.Request] struct {
}

func NewTestBindingS types.Stringer, P *http.Request Binding[S, P] {
return &testBinding[S, P]{}
}

func (t testBinding[S, P]) Name() S {
return “name”
}

func (t testBinding[S, P]) Bind(p P, a any) error {
return nil
}

types.Stringer 是自定义的一个类型
type Stringer interface {
~string
}

func IndexOf[T comparable](collection []T, target T) int {
for i, t := range collection {
if t == target {
return i
}
}
return -1
}

goland 一般要再等一个版本更新才能解决提示报错问题。

不是 gopls 的 bug 吗

等新版本再试试 1.18

感觉第三方库又要爆发一波了

以上 bug 在 2022.1 eap 均无复现,看来适配了

看了 release note, 我的关注点全在 fuzz 上了, generics 反而感觉没什么亮点

马上升级试试~~~

brew 还没更新,懒得自己手动下载。

从 rc1 就开始用了 并未遇到什么 bug

goland 怎么升级了,我的一直无法升级到最新版本

我们鼓励在有意义的地方使用泛型,但在生产环境中部署泛型代码时,请谨慎行事

有点坑,目前还不推荐在生产环境使用,估计要等 1.19

https://www.jetbrains.com/toolbox-app/
用 jetbrains toolbox 管理你下载的 app

goland 目前是有问题,只能暂时换回 vscode 用用了

有没有大哥教一下,为什么这样写是不对的?

package main

import "fmt"

func Max[T comparable](x, y T) T {
if x > y {
return x
}
return y
}

func main() {
fmt.Println(Max(1, 2))
}


.\draft.go:6:5: invalid operation: x > y (type parameter T is not comparable with >)

comparable 不能用于比较大小,你得自己定义一个类型哦。。比如:

type NumOrdered interface {
int | int32 | int64 | float32 | float64
}

comparable 是比较等于或不等于,比较大小应该是 ordered 吧

梦想破灭了, 为什么要加泛型呢, 不是说好的不加的么, 骗子

2021.3.3goland 还不支持 go workspace…

+1…这个特性对我还挺重要的

测一下 eap 支持不

看到有说范型丑…难道 interface 就不丑么

Goland 还会报错…
go<br>func Contain[T comparable](a []T, b T) bool {<br> for _, t := range a {<br> if t == b {<br> return true<br> }<br> }<br> return false<br>}<br><br>

我喜欢泛型,赶紧升级一下

homebrew 看了下,每次 go 更新大版本都要延迟很久,各种依赖 go 的包都要改版本号…

升级前,GOLAND 会提示错误,但实际能运行
升级到 2022.1 EAP 后,不提示错误了

golang2021.3.4 发布了,已经不提示错误了

+1

哇塞,确实是个令人激动的消息!Go语言 1.18 的发布带来了不少新特性和改进,对于Go语言的开发者来说,这无疑是一次重大的更新。

在1.18版本中,最引人注目的莫过于泛型(Generics)的正式加入。这一特性让Go语言在类型安全性和代码复用性方面迈出了重要的一步。通过泛型,开发者可以编写更加通用、灵活的代码,减少模板代码的编写,提高开发效率。

此外,1.18版本还对语言的工作流进行了一些改进。比如,现在你可以在go.mod文件中使用//go:build指令来替代原有的// +build指令,这使得构建标签的语法更加清晰、易于理解。同时,新的构建标签语法还支持更复杂的逻辑运算,让构建配置更加灵活。

在工具链方面,Go 1.18 也带来了不少升级。比如,新的go work命令让你可以在多个模块之间协同工作,这对于大型项目或者需要跨模块开发的场景来说非常有用。

总的来说,Go语言 1.18 的发布是一次非常成功的更新,它不仅带来了泛型这一重量级特性,还在工作流和工具链方面进行了诸多改进。这些更新无疑将进一步提升Go语言的竞争力和开发者体验。

如果你还没有尝试过Go 1.18,不妨现在就动手升级一下,感受一下这些新特性带来的便利吧!相信你会有不一样的收获和体验。

回到顶部