我怎么感觉 Golang 并不简单,也很复杂

2022-12-30 13:21:19 +08:00
 passer9527

最近实在顶不住 go 的各种宣传诱惑,准备学下 go

我根据 go 的官网( https://tour.go-zh.org/welcome/1 )过了一遍 go 的语法。

第一感受就是 go 并不是网上说的那种极简、什么大道至简。不知道是不是因为一直被宣传成 go 简单,让我潜意识觉得,就是比 python 更简单才叫简单。

下面我说说我觉得很复杂的点:

  1. 指针、函数指针(闭包)等等各种指针用法
  2. interface 用法。

这两个东西组合起来,写出来的代码可以极其复杂。(感觉都能赶上以前看的那种 C 语言混乱代码大赛了)。

然后我感觉好的点:

  1. defer
  2. 并发编程和同步,就是被吹爆的 go 协程
  3. 没有 while 关键字了,都用 for 来搞定,也算变相提升了 for 复杂性。

感觉要学好 go ,写出能和人协作给人看的代码,而不是自嗨的代码,也不是一件很容易的事。也许相对 c/c++,要容易点,但也并不是什么有手就行的极简,完全就是忽悠啊。

10476 次点击
所在节点    程序员
71 条回复
Crawping
2022-12-30 15:57:37 +08:00
一般咱么说一个 语言简单 并不是只是说 语法简单.
1.语法是否符合直觉,从其他语言转过来亲和力高
2.常见编程模型非常通用
3.类库够完全,易用,易管理 (import 一下即可 go get)
4.语法糖不要太多..免得歧义, 类似 茴字的 N 种写法 就很恶心人
5.编译部署是否简单.. 包括 交叉编译,跨平台的部署...

还有好多方面....
就上面提到的几点...
作为一个 C/C++开发兼运维 常年配置各种编译环境,各种编译库,各种部署不一致的人来说...
go 真是 简单到爆炸了...
iyaozhen
2022-12-30 16:06:24 +08:00
大道至简 其实有时候是贬义词
yolee599
2022-12-30 16:07:58 +08:00
我一个写 C 觉得 Go 的语法比较松散,像一个脚本语言,喜欢不来
Seanfuck
2022-12-30 16:16:18 +08:00
@boshok php ?
fregie
2022-12-30 16:17:44 +08:00
interface 才是 golang 最成功的部分,在便准库的指导下,做个比喻,把模块间的组合方式,由拼图变成了积木.
拼图是必须要两块要完全吻合才能放到一起,基本上一块拼图只能插在固定的另一块上.而积木是,只要你两块长得差不多就拼在一起用.
当然以上说法仅限于某些好的实践,实际上也存在很多差的实践,甚至某些大的主流框架这一点做的很差.(既然是积木,为什么要做大的框架呢?)
Jony4Fun
2022-12-30 16:20:01 +08:00
the ultimate go -> 最近在看的一个系列视频,感觉很有意思,老外的编程思想以及 go 语言里的一些细节的东西。
我个人还是比较喜欢 go 的,我感觉 C++,python 就是给人的选择太多了,有时候就导致了混乱。
yekern
2022-12-30 17:12:25 +08:00
抛开业务谈语言复杂度都是刷流氓.

你看哪个语言写 hello world 复杂 都不复杂
Nazz
2022-12-30 17:15:07 +08:00
指针和 interface{}相当简单了, 业务开发用不到 unsafe. channel 稍微复杂点
yuancoder
2022-12-30 17:23:34 +08:00
go 语法本身很简单,真正掌握 go 要了解一些底层的原理,不然写出的代码都是坑。
kiripeng
2022-12-30 17:33:42 +08:00
go 基本搞懂指针就大家都差不多了
openmm
2022-12-30 17:50:50 +08:00
go 写起来怎么排版我都感觉乱 比 c++还乱 不知道是不是我的问题
bruce0
2022-12-30 18:01:13 +08:00
学会用不难, 想要用好 需要一定功力
PlanZ
2022-12-30 18:10:32 +08:00
必须要用到的时候才学,即便这样,也学不动了。
fxxkgw
2022-12-30 18:15:27 +08:00
我写了很多年的 C 和 python 现在接手了 go 项目变看项目变学 感觉 go 的真谈不上简单 比 python 复杂多的
securityCoding
2022-12-30 20:09:08 +08:00
@Jony4Fun 这个系列非常非常棒,这老外太有激情了
GiantHard
2022-12-30 20:13:48 +08:00
@boshok C#
PTLin
2022-12-30 20:32:55 +08:00
看个 tour 肯定简单,但是实际上用的话要记住各种细节,比如什么情况下可以自动进行什么优化,什么用法是常见的语言陷阱,常用的库都是什么,最佳实践是什么,这些加起来好像 go 也没那么简单。
Kilerd
2022-12-30 21:59:51 +08:00
Rust: 什么? 复杂?
lepig
2022-12-30 22:09:57 +08:00
哈哈 同感。 写简单的小应用小工具确实很快很简单
pengtdyd
2022-12-30 23:45:27 +08:00
能写出这个标题的人,估计没学过 rust

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/905569

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX