Golang Go语言 2 设计草案公布了
Golang Go语言 2 设计草案公布了
https://go.googlesource.com/proposal/+/master/design/go2draft.md
主要涉及社区呼声最高的痛点:泛型,错误处理。 但是习惯了 Java,看这个语法感觉有点奇怪...
以后代码每一行都要加一个 check 罗。😁😁
更多关于Golang Go语言 2 设计草案公布了的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
<br>func main() {<br> handle err {<br> log.Fatal(err)<br> }<br><br> hex := check ioutil.ReadAll(os.Stdin)<br> data := check parseHexdump(string(hex))<br> os.Stdout.Write(data)<br>}<br>
我觉得不如 Rust 的?宏简单。
hex := ioutil.ReadAll(os.Stdin)?
data := parseHexdump(string(hex))?
多好。
GO 不支持 3 目运算符,所以问号应该也是可以使用的。
V 站不能编辑主题,也不能 append…
简单搬运一些草案中的新的语法设计
丑拒.
我一直拒绝 Go 的原因就是语法太 tmd 丑了,越写越想吐槽,越写越难受。
感觉这错误处理还不如 try…cache/except 好看,,有点儿丑,,
有点难受
真 jb 丑。虽然我用了很多 go。
error 处理要么就粗暴搞成跟人家 java 一样的, 要么就学 rust 那类学院点。
三元语法没有,也叫草案。
说实话真的不如try...cache/except
好看
try cache 是啥?
我只用过 try catch
先把函数参数默认值加上再说别的…
完了,复制黏贴丢脸了
真。。。丑拒
真心需要 rust 的那个宏啊。。好用到爆炸啊。。。
go 没有宏多写多少代码啊。。。
公司在用 go. 这玩意儿各种语意不一致, 自相矛盾. 工程师拍脑门想出来的东西不靠谱. 还是要学术界的人设计才行.
语法真的是,,怎么说,虽然觉得 rust 语法真难学,但这个就,,简单是简单,但是太丑了吧
丑拒,要改成这样我有概率会转化成 go1 死忠了
其实如果觉得 rust 好,如果什么都要跟 rust 一样,为什么不直接用 rust 呢。。。。。。
很多人吐槽错误处理机制,我倒是觉得这种挺好的,这种错误处理方式虽然看起来丑,其实跟 defer 和 panic 的处理方式是一样的,同时能更好地兼容以前的代码,如果用 try…catch 那基本 go1 那跟以前的代码没办法兼容,到时候 go1 的库 go2 用不了,才会真正割裂吧
golang 的语法真的受不了,非要标新立异,越写越难受,比这更难受的是一部分 go 吹,无脑崇拜。
这他妈还不如不改
v2ex 里的无脑黑都来了,帖子里充满了快活的气氛
慢慢就习惯了
check 切克闹 煎饼 go 子来一套
每一行都要 check ?蛋疼
感觉错误处理那里并没有减少多少代码量。。
曾经的 golang 『粉』,现在觉得 golang 真鸡儿丑。
设计的也不优雅,改了 handle error,想方便一些是好事-_-
还是觉得有点丑…
这个错误处理方式违反直觉,正常思维先发生操作,后处理错误,这个设计是把错误处理放到代码最前面了。
泛型语法可以接受,但为什么不直接用<>而用 type 关键字,尖括号更简单点吧。
那个错误处理什么金箔语法,每个可能出错的地方我都得加 check ?还不如 c-style 的返回值判断,rust 那种也可以啊。
至于楼上说 exception 的,考虑过 C++的 exception 里到底多少坑?完全违反 RAII 的基本内存管理原则,这玩意能让你从程序的 memory leak 和 crash 变成人 memory leak 和 crash,Java 之类有虚拟机兜底还稍微好点。Go 号称贴近底层,runtime 的 gc 编译进去就已经很蛋疼了,还要帮你兜底异常?
毕竟只是个 draft,这些痛点如果能改好,觉得很不错!
真丑
这错误处理什么鬼,先写异常处理,再 check,什么直觉。。。
可以,这很 Go,一眼看上去,这一堆啥啊!
写几个 handle,一个个 check, 最后可能还要 defer , 中间穿插着 return,迷宫呢这是
看到大家都说丑我就放心了,,我的审美没啥问题(^▽^)
没有人吐嘈泛型的语法吗,为嘛这个另类。
因为 Go 是 structural subtyping
https://github.com/songtianyi/songtianyi.github.io/blob/master/mds/techniques/go2-design-draft-introduction.md
这个语法是有点。。。 哪个家伙想出来的
为啥不学 python 的 meta 或者 C#的模式匹配? 就是 C++古老的模版也比这好看吧
Error Handling 是真丑,没了一堆 if err != nil 引入了一堆的 check handler,关键是 handler 还现在前面,读代码的时候先看到错误处理,一脸懵逼,然后再往下看才知道原始是处理这个。。。
Go 的错误处理,丑但是正确。
的确丑, 没法洗地
防御性编程,上来先想到出错的地方,所谓御敌千里之外是也。
不过我一直不喜欢写 go,是因为他非要用 tab。
go 语言是 c 的改进版,这样想就不觉得丑了
为什么我觉得很美呢。。哦对了,我是无脑 Go 吹
语言最初设计 有问题,该割裂就割裂 长痛不如短痛
仔细想一想,handle 语法虽然看起来丑,但是有比 try/catch 好的地方
go2 赶紧出吧
针对“Golang Go语言 2 设计草案公布了”的帖子,作为IT领域Go语言方面的专家,以下是我的回复:
Go语言2.0的设计草案确实已经公布,这是Go语言发展历程中的一个重要里程碑。该草案主要聚焦于三个方面:错误处理、错误值和泛型,旨在解决Go 1.x在规模化方面存在的不足,并提升语言的扩展性和复用性。
在错误处理方面,Go 2.0希望实现更轻量级的错误检查,减少用于错误检查的代码量,并方便开发者编写错误处理程序。同时,Go 2.0还考虑将“可选接口”标准化,以允许各种助手工具包进行互操作。
泛型是Go 2.0的另一大亮点。通过引入泛型,Go 2.0将解决编写Go库时遇到的问题,如抽象出不必要的类型细节。这将极大地提升代码的可重用性,并使得开发者能够编写出更加灵活和高效的代码。
总的来说,Go语言2.0的设计草案为Go语言的未来发展奠定了坚实的基础。我们期待看到Go 2.0在错误处理和泛型等方面的改进,并相信这些改进将使得Go语言在大型软件开发中更加出色。