作为 Go 语言爱好者,我来总结一波 Go 的优势:
Golang 的开发者 Robert Pike 和 Ken Thompson 都是 UNIX 小组的成员,UNIX 系统影响深远,包括 UNIX 哲学-保持简单,也深深影响着后世。他们深刻理解简洁的好处,所以在设计 Golang 时同样保持这一原则。
编译成目标机器代码,部署容易,无需额外的依赖,性能优越。
GoLang 使用 goroutine 来实现并发性,它提供了一个非常优雅的 goroutine 调度程序系统,可以很容易地生成数百万个 goroutine 。
无需解释
有许多易于使用的内置工具,比如 gofmt 自动排版 Go 代码,很大程度上杜绝了不同人写的代码排版风格不一致的问题,大大提高了团队协作的一致性。
欢迎 V 友们补充。
1
angrylid 2021-11-09 13:15:39 +08:00 via Android 2
日经贴了。你说的都对,但其实对于我这样的菜狗来说,大佬用啥我就跟着用啥。
|
2
iyear 2021-11-09 13:17:03 +08:00 1
我尝试预言一波,第一点会被喷死,第二第三点会有人说各种别的语言也支持
语言大战马上开始,话说回来这种帖子太招黑了,我甚至觉得你是反串黑🐶 |
3
waising 2021-11-09 13:21:49 +08:00
go 会用的还是会用,不会用的吹了也不会用,反正每个语言都是一堆问题....看个人喜好和公司要求吧
|
5
qq1340691923 2021-11-09 13:26:49 +08:00
马上就会开始大战了...
|
6
ligiggy 2021-11-09 13:27:22 +08:00 3
第一点论证不充分。就比方说,衣服的设计师是 xxx ,他的风格是简单,所以他设计出来的新衣服就一定是简单的吗?
|
7
Brian1900 2021-11-09 13:29:18 +08:00 3
nil 警告
|
8
oott123 2021-11-09 13:30:42 +08:00 47
大道 if err != nil
|
9
bipy 2021-11-09 13:32:47 +08:00
日经贴,甚至没有新颖的观点
|
10
XTTX 2021-11-09 13:35:23 +08:00 2
你这个肯定会又双叕引起语言大战。 我从 go 弄到 js 到 react 到 ts, 玩过一点点 express.js. 只要写惯了,语言没有什么大不了的。只要团队的代码有明确的标准,都还好。js 也有 eslint 和 prettier , 团队可以确定自己的排版风格。React 换成了 vite(esBuild, go 写的),compile 速度也不慢了。 至于性能,如果你的业务多到语言本身的性能成了瓶颈,我觉得你公司已经是独角兽级别的了,你会有足够的资源解决这些瓶颈。
|
11
MarioLuo 2021-11-09 13:42:09 +08:00
Go 语言的三座大山包管理,泛型,错误处理,全搞定就完美了
|
12
Kilerd 2021-11-09 13:46:59 +08:00 1
大道至 nil
|
13
BeautifulSoap 2021-11-09 13:50:08 +08:00
Go 泛型要被解决了,但是 Go 这一言难尽无限套娃还不附带调用栈信息的 error 接口,估计还得继续用好多年
|
14
masterclock 2021-11-09 13:53:05 +08:00 1
我设计的语言 void
1. 大道至简 一生二,二生三,三生万物,void 回归本质:0 2. native 无需部署,兼容过去、现在、未来任何计算架构 3. 并发支持 无需解决任何并发带来的问题 4. 编译快 无需编译 5. 完善的工具链 6. 不存在 大道至简,首先要是大道啊 |
15
zijieq 2021-11-09 13:55:54 +08:00 via iPhone
包管理太难用了
|
16
xz410236056 2021-11-09 14:06:11 +08:00
@zijieq #15 有 go mod 之后还行啊
|
17
XTTX 2021-11-09 14:14:40 +08:00
@MarioLuo 包管理我觉得 go.vendor 能解决不少问题,默认选择不带 go.mod 的版本我觉得是有点蠢的。至于错误处理,我觉解决方式在于你设计 app 之初决定什么层级 wrap err 返回到 caller, 什么层级决定处理 err. 具体可以看看 github Ardanlab service repo. 它至少解决了我 web app 错误处理的问题。
|
18
ck65 2021-11-09 14:19:35 +08:00 21
Go 语言,又名 Errlang 。
|
19
ciki 2021-11-09 14:29:34 +08:00
感觉 go 在国内用的比国外还多
|
20
fenglangjuxu 2021-11-09 14:31:15 +08:00
go modules 混乱的一逼
|
21
28Sv0ngQfIE7Yloe 2021-11-09 14:47:19 +08:00
@ciki #19 目前是的,
|
22
ravenl 2021-11-09 14:48:18 +08:00 3
|
23
wonderfulcxm 2021-11-09 14:56:22 +08:00 via iPhone 1
上次看到大道至简还是 thinkphp 的文档以及用这玩意的糟糕的体验。
|
24
jackmrzhou 2021-11-09 15:36:23 +08:00 via iPhone
关于简洁性,评价一下 1.18 要上的 type parameter.
|
25
darknoll 2021-11-09 15:36:43 +08:00
开始压根没打算学这个,就非常看不起,觉得还是学 rust 好,可是最后呢,还不是学了 go 。
不学 go 也行啊,就学 java 去内卷吧。 |
26
gowk 2021-11-09 15:44:07 +08:00 2
https://commandcenter.blogspot.com/2012/06/less-is-exponentially-more.html
少即是多,这篇文章我读过很多遍了,建议学习 Go 的同学都读一下 |
27
SmiteChow 2021-11-09 15:45:56 +08:00
人生苦短啊,吹什么啊
|
28
Numbcoder 2021-11-09 15:47:17 +08:00 1
大道至简,为什么不去写汇编?
|
29
jackmrzhou 2021-11-09 16:00:36 +08:00 via iPhone 3
@gowk 里面说 no template. 但是 1.18 马上就要上 mini 版 template 了呢.
作为一名 golang 开发,事实就是我觉得 golang 并没有多好用。 阉割的特性需要用一些蹩脚的方式完成,但是别人告诉我这是大道至简。golang 专有的特性又让一些新转 golang 的经常写出问题。嗯 我说的就是那个 defer 和 channel 。 用 golang 去写写中间件还行,用来写业务真的是头疼,但是现在又有多少人工作中用 golang 真的是在写中间件呢。 |
30
meiyoumingzi6 2021-11-09 16:05:19 +08:00
害....... 不能好好继承蛋疼的一批, 有时候不得不魔改代码,往本地仓放一份
|
31
kett 2021-11-09 16:16:24 +08:00
生态还是差点,开箱即用的轮子还是少了点。
|
35
pisc 2021-11-09 16:37:18 +08:00 via Android 5
我总结了一下吹某某编程语言的人常有的两个特征:1. 其实还不怎么懂这个语言,坑没踩够,还在蜜月期,2. 见识少
|
36
pigspy 2021-11-09 17:14:22 +08:00
大道至简,指 interface {}
|
37
Fu4ng 2021-11-09 17:21:21 +08:00
工作不好找啊。。。
|
38
sanggao 2021-11-09 17:25:02 +08:00 2
满天飞的 if nil
满天飞的函数参数 interface{} 谁看得懂? 看不懂?抱歉 那是你水平太差 |
39
sanggao 2021-11-09 17:25:25 +08:00
golang 开发 web 比 php 有优势?
|
40
longkas239 2021-11-09 17:27:04 +08:00
过时了,2021 年 rust 已经大爆发,只剩下老顽固
|
41
missdeer 2021-11-09 17:28:36 +08:00
你说的都说,但今天.NET6 出了,被他们吹得我都想去试试 C#了
|
42
Chad0000 2021-11-09 17:45:10 +08:00 via iPhone 1
@missdeer 没有吹,这几年 C#的进步肉眼可见。我在海外,我们这边 C#是主流,市场占一半以上。大家都很期待
|
43
DefoliationM 2021-11-09 17:47:45 +08:00
错误处理跟屎一样
|
44
yazinnnn 2021-11-09 17:47:55 +08:00
为什么很少有人吹 clojure 呢,国内从业者太少的原因吗。。。
|
45
zhuzhibin 2021-11-09 17:49:12 +08:00
又开始了
|
46
oOoOoOoOoOo 2021-11-09 18:10:47 +08:00 via Android
@longkas239 Rust 圈 也挺嗨
|
47
pkoukk 2021-11-09 18:11:12 +08:00
啥时候改改 if err:=
我代码里起码有三分之一在写这句话 |
48
redmoon0825823 2021-11-09 18:23:42 +08:00
人生苦短,我用 ruby
|
49
JudyHal 2021-11-09 18:29:44 +08:00 3
判断一个语言好不好,看那些国家用就行了,Go 和 Java 都是典型的只有中国在用的,怎么样就不用我多说了吧?
|
50
guanhui07 2021-11-09 18:39:34 +08:00
大道至 nil
|
52
saturn7 2021-11-09 18:53:39 +08:00 2
性能被 C++, Rust 按地上摩擦,生态,GC 又不如 JAVA ,鸡肋选择。
|
53
ncepuzs 2021-11-09 18:55:23 +08:00 4
@JudyHal 无知傲慢又愚蠢
「回复了 josephok 创建的主题 › Go 编程语言 › 再来吹一波 Golang 判断一个语言好不好,看那些国家用就行了,Go 和 Java 都是典型的只有中国在用的,怎么样就不用我多说了吧?」 「回复了 passer9527 创建的主题 › 问与答 › 一个疑惑:为啥很多初创公司不选择最主流的技术栈? Java 是一个本来就应该死掉的语言,硬是被国内这些培训班救了,可以说没有中国,Java 这种古董语言早就进垃圾桶了,还是把眼界打开多去看看 Go 吧,设计理念会让你得到空前的享受」 |
55
aababc 2021-11-09 19:04:13 +08:00 1
个人感觉,go 是把复杂从语言层面推到了普通的开发者!感觉它的 大道至简 是对开发 go 语言本身,作为一个使用 go 语言的人,只是觉得别扭!
|
56
wzw 2021-11-09 19:10:04 +08:00
Python 换 Golang 的角度来说, 挺好, 越写越越好吧
|
57
raycool 2021-11-09 19:15:29 +08:00
我用 python
别的也不会 |
58
stach 2021-11-09 19:21:51 +08:00 3
go = python + c
--- go 是一门 get 到了后端程序员 G 点的语言, 用这个公式来表达再恰当不过 |
59
cmdOptionKana 2021-11-09 19:31:10 +08:00 1
@stach 我用了 go 之后甚至有一点点嫌弃 python ,因为最著名的 python 哲学 The Zen of Python 里说的,反而是 Go 做得比 Python 更好。
明瞭优于隐晦 简单优于复杂 任何问题应有一种且最好只有一种解决方法 很难解释的,必然是坏方法 很好解释的,可能是好方法 |
60
hushao 2021-11-09 19:38:25 +08:00
需要啥时咱用啥。
每种语言都不是万能的,充分发挥特长才对。再爱也只是工具,不本末倒置。 |
61
hushao 2021-11-09 19:46:57 +08:00
@saturn7 go 国内使用无非就是这俩对比了。性能比 c++差不太多的前提下,又比 java 省不少。所以都大厂在上车,收益明显,中小跟着上车明显是见风使舵。至于语言的其他什么特性如部署、编译、开发体验之类,作为决策人,你觉得除了成本和收益,人家关注么。
至于个人来说,要么要求啥用啥,要么喜欢啥用啥,无他 |
62
xuyang9978 2021-11-09 19:59:57 +08:00 via iPhone
个人很喜欢 go (不过这些优点感觉网上都说腻了😂
|
63
lbp0200 2021-11-09 20:03:13 +08:00
爽就行了,不要出来炫耀,低调
|
64
gowk 2021-11-09 20:05:48 +08:00 3
「 Go 和 Java 都是典型的只有中国在用的,怎么样就不用我多说了」
一口老血喷出来,差点当场出世,看来以后得少逛 V2 了,好多没有意义的讨论 |
66
stach 2021-11-09 20:11:00 +08:00
@cmdOptionKana Python 就像一个美女, 当你熟悉了, 却发现她有口臭, 有点嫌弃, 哈哈哈
|
68
leeg810312 2021-11-09 20:29:35 +08:00 via Android
go 加了泛型,可能要加模板了,还大道至简吗?我们开发组在做一个产品,最初也是希望轻量简洁,随着产品进化,筛选特性,很多次迭代做到现在还是变重了。为了满足技术需求,最终 go 也会走上逐渐增加特性的道路
|
69
szkoda 2021-11-09 20:44:27 +08:00
百团大战开始了,这种帖真是流量密码啊
|
70
balabalaguguji 2021-11-09 21:20:06 +08:00
曾今我刚学习 Go 时也是有你这种错觉,知道我开始用它来跟 Mongodb 交互,吐了,看帖 https://www.v2ex.com/t/810126#reply98
|
71
balabalaguguji 2021-11-09 21:20:35 +08:00
直到
|
72
zxCoder 2021-11-09 22:04:55 +08:00
golang 的大道至简(if err != nil) 就跟苹果的刘海一样 hhh
|
73
TypeError 2021-11-09 22:08:18 +08:00 1
我还是喜欢 python ,除了速度慢
go 其实就那样,该加的特性不加,enum 都没有,反而 protobuf 里有,又要用代码生成实现一次 不该加的特性加了,比如比较 nil interface 的时候非要比较 type 和 value 两个地方,太傻逼了 |
76
wangritian 2021-11-10 08:10:59 +08:00
忽略使用场景谈语言没有意义,go 是做高并发中间件的
|
78
p1gd0g 2021-11-10 09:11:11 +08:00
我还是喜欢 go 一点,c# 光是语法就够让我喝一壶了。
|
79
suyuyu 2021-11-10 09:19:53 +08:00
重新定义 `简`
|
81
ZeroDu 2021-11-10 10:07:01 +08:00
javaer:怎么说,这些真的没有绝对的。就平时搞一些一个小工具来看,go 的内存占用是真的香,对比 java 来说可能要占用 10 倍多吧。但是 go 其他发面是倒是没有 java 好使。
|
82
fengjianxinghun 2021-11-10 10:08:13 +08:00
@oott123 至简 interface{}
|
83
dragondove 2021-11-10 10:08:18 +08:00 2
大道至简,我发明的语言“太极”,语法就两个字“阴”和“阳”。阴为 0 阳为 1 。
native: 编译成机器码,性能看编写的人。 并发支持:如果你觉得不好,可以把其他的语言写的程序编译成二进制,然后转换为“太极”语言进行阅读学习。 编译快:无需解释 完善的工具链:任何工具链都可以使用,因为任何语言都可以最终翻译成“太极”。代码风格只有一种,不用担心不一致的问题。 |
84
necodba 2021-11-10 10:19:44 +08:00
C 艹不好吗
|
85
FightPig 2021-11-10 10:23:21 +08:00
泛型要来了,以后的代码估计至简不了了,然后我最满意的就是编译速度,用 rust 总觉得 慢
|
86
tedcon 2021-11-10 10:27:43 +08:00 1
我喜欢 TypeScript
|
87
libook 2021-11-10 10:30:51 +08:00
零食🍬小板凳🪑围观撕逼大战🔭
十年前见的最多的是“PHP 是世界上最好的语言”。 |
88
imkerberos 2021-11-10 10:39:49 +08:00
@dragondove 你说出了我的心声.
|
89
imkerberos 2021-11-10 10:42:55 +08:00
@pigspy 大道至简: void*
|
90
hush3 2021-11-10 10:51:42 +08:00
啊对对对
|
91
bxb100 2021-11-10 11:15:07 +08:00
照这么说, rust 不是更值得吹吗
|
92
skipwitit 2021-11-10 11:32:30 +08:00
对于大多数场景来说,python 和 go 完成需求,没什么区别
哪个撸的快用哪个就行 |
93
fyxtc 2021-11-10 11:51:39 +08:00
好无聊啊,这都能上热榜,讨论语言本身果然还是最具有流量的,毕竟谁都能插一句。。。
|
94
Phishion 2021-11-10 11:54:03 +08:00
现在都没几个人吹 PHP 了,俺的青春结束了
|
95
lysS 2021-11-10 12:00:19 +08:00
@jackmrzhou 和别的语言都一样,那 go 的作用是什么? go 的简单的理念有什么问题
|
97
exhades 2021-11-10 12:51:44 +08:00
golang 就是为了简单的简单的语言而已。。。rust 才是最终答案 (手动狗头
https://www.zhihu.com/question/490074663/answer/2207090107 https://www.zhihu.com/question/352343414/answer/868915902 |
99
Zwying 2021-11-10 13:03:55 +08:00
js yyds
|
100
mx8Y3o5w3M70LC4y 2021-11-10 13:33:10 +08:00
ts, yyds
|