感觉 go 语法好诡异

2018-01-23 11:38:44 +08:00
 boywhp

昨天学习了下 go 语言,一开始画风还挺正常的,直到我看到数组和 MAP,感觉语法好绕人

具体见 https://tour.golang.org/moretypes/22

感觉 go 语言比 Python 绕脑子多了啊

个人用过 C 和 PYTHON

7712 次点击
所在节点    Go 编程语言
81 条回复
SuperMild
2018-01-23 12:41:34 +08:00
C 连 gc 都没有,而且 C 是目前主流编程语言中罕见的弱类型,也就是说连完整类型系统都没有,高手可以用好 C,但说 C 易学易用是不是夸张了,golang 你看别人写的代码,比 python 还要清晰易懂,C 能达到这个效果?
fuyufjh
2018-01-23 12:43:47 +08:00
其实 C 的语法更绕,不信你定义一个函数指针数组试试
SuperMild
2018-01-23 12:46:34 +08:00
@JerryCha 类型后置的其中一个目的是为了使指针声明更清晰,类型前置一旦和指针结合使用看起来更绕。
boywhp
2018-01-23 12:51:46 +08:00
@SuperMild 我上面说得够清楚了! C 语法更好理解,效率更高,配合网络方面的库 开发高性能的代码只会比 go 更快!我想用 go 不就是图语法更易用么?性能差点也能接受,Python 这么流行和他语法设计优雅有很大关系,Python 语法才是正常人思考方式,go 不是
cabing
2018-01-23 12:54:04 +08:00
可以先用用 rust~~再回头看 go
PureWhite
2018-01-23 12:54:17 +08:00
等有一天,楼主需要写库造轮子的时候,就会知道 go 的好了。。。。
用 Python 没有类型的痛啊。。。。
boywhp
2018-01-23 12:56:13 +08:00
C 的核心语法规则比 go 容易学多了! go 的规则比 C 还多,我才看到 map 就已经记不住了
PureWhite
2018-01-23 12:59:02 +08:00
@boywhp Python 从语法优雅性上确实比 go 要好很多,但是毕竟 go 并非动态语言,还是比较看重性能的,所以语法上的设计也是不得已。
有时候自己写一些小东西还是 Python 用的顺手,但是真正做一些大一些的东西 Python 就有点力不从心了。用 C 又太繁琐,特别是如果没有现成的东西给你用的时候。Go 正是适应这种场景。
boywhp
2018-01-23 13:00:42 +08:00
@PureWhite 这么多语言,造的轮子还不够么? java 和 Python 的库不比 go 更丰富?为何 C 语言这么多年还能经久不衰?
evilgod528
2018-01-23 13:13:02 +08:00
go 的语法够简单了
myself659410
2018-01-23 13:56:12 +08:00
学习 c 到 golang 我觉得很简单 三天基本上就可以上手写代码
mason961125
2018-01-23 14:02:15 +08:00
说句不好听的,学一个语言的时候,如果你是真的想学,就要抛弃你以前有的那些语言习惯,尽最大努力去接受一门新语言的设定。但是以你目前的状态,抱着 C 的语言特性不放,处处和 Go 比较,能学好我是不相信的。
DOLLOR
2018-01-23 14:03:52 +08:00
类型放在后面挺好的,用过 pascal 不会觉得难受。
再看看类 C 语言把类型写在前面的,定义一个函数指针就知道有多蛋疼。
mason961125
2018-01-23 14:17:03 +08:00
@boywhp C 经久不衰有它独特的原因,操作系统用啥写你我都知道。Java Python 在系统级上的能力基本为 0,你不用 C 你用什么?
rockyou12
2018-01-23 14:24:58 +08:00
LZ 要是有结论那发个帖干嘛?人家和你讨论你又撒泼打诨,golang 好不好,全球这么多开发者、这么多项目已经证明了。你主观喜不喜欢那是你自己的事,用得着发个帖找存在感?
Mogugugugu
2018-01-23 14:25:50 +08:00
@htfy96 一门设计成 better C 的语言把 Java 干趴下了,哈哈哈哈😄
mengzhuo
2018-01-23 14:35:51 +08:00
@htfy96 #12 目标是 better C++
不是 C

Ken 老爷子自己发明了 C,Go 相当于重新来过,然后成了 better C。
butaixianran
2018-01-23 14:51:44 +08:00
go 就是输在了语法、错误处理 和 垃圾回收上,别的都很完美了。

可以理解为,go 为了保持高性能,牺牲了语法上的便利。

之前用 go 写网络服务,真心觉得不值得,网络服务几乎全是操作 Json,用 go 写起来累死,换 nodejs 开发快很多倍。

go 还是用来折腾文件系统算了,和网络有关的,基本都是数据库添删改查,折腾 json,go 就没优势了。
SuperMild
2018-01-23 14:53:15 +08:00
@boywhp 看到你说学习 go 的原因了 “想用 go 就是图语法更易用”,不知道你从哪里看来得误会,go 的语法从来不是主要卖点,大多数言论对 go 的语法评价都是毁誉参半。

如果目的是语法,建议学 Kotlin,这才是以语法为主要卖点的语言,而且得益于强大的 java 虚拟机,性能不能说差,至少比 python 好,还能利用 java 的生态,生态方面比 go 和 C 都好,貌似更符合你的要求。
neoblackcap
2018-01-23 15:29:40 +08:00
Golang 的类型声明完全不是问题,说 C 简单的请看 void (*signal(int sig, void (*func)(int)))(int),这个函数到底是接收什么参数返回什么什么呢?

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

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

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

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

© 2021 V2EX