Golang Go语言 哇靠,1.18 release!
我先更为敬了🐶
终于出来了,不容易
Golang Go语言 哇靠,1.18 release!
发现 goland 对泛型支持有 bug ,能正常编译的代码报错,先降回 1.17 了
可以啊
#4 哎,试了一下现在这个写法的确可以。想当然了。编辑了一下,现在应该能触发 goland 的 bug 了
type alias 或者 type definition 都能触发
sogo 我用的 vscode 你 gomod 指定 1.18 了么?
对,不指定 1.18 也编译不了…
范型也太丑了
本来大项目的代码就不容易阅读,这下子到处抽象更晦涩了
起床更
就是 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 一般要再等一个版本更新才能解决提示报错问题。
等新版本再试试 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,不妨现在就动手升级一下,感受一下这些新特性带来的便利吧!相信你会有不一样的收获和体验。