作为 Go 语言爱好者,我来总结一波 Go 的优势:
Golang 的开发者 Robert Pike 和 Ken Thompson 都是 UNIX 小组的成员,UNIX 系统影响深远,包括 UNIX 哲学-保持简单,也深深影响着后世。他们深刻理解简洁的好处,所以在设计 Golang 时同样保持这一原则。
编译成目标机器代码,部署容易,无需额外的依赖,性能优越。
GoLang 使用 goroutine 来实现并发性,它提供了一个非常优雅的 goroutine 调度程序系统,可以很容易地生成数百万个 goroutine 。
无需解释
有许多易于使用的内置工具,比如 gofmt 自动排版 Go 代码,很大程度上杜绝了不同人写的代码排版风格不一致的问题,大大提高了团队协作的一致性。
欢迎 V 友们补充。
![]() | 1 wakarimasen 2021-11-09 13:15:39 +08:00 via Android ![]() 日经贴了。你说的都对,但其实对于我这样的菜狗来说,大佬用啥我就跟着用啥。 |
![]() | 2 iyear 2021-11-09 13:17:03 +08:00 ![]() 我尝试预言一波,第一点会被喷死,第二第三点会有人说各种别的语言也支持 语言大战马上开始,话说回来这种帖子太招黑了,我甚至觉得你是反串黑 |
![]() | 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 ![]() 第一点论证不充分。就比方说,衣服的设计师是 xxx ,他的风格是简单,所以他设计出来的新衣服就一定是简单的吗? |
![]() | 7 Brian1900 2021-11-09 13:29:18 +08:00 ![]() nil 警告 |
![]() | 8 oott123 2021-11-09 13:30:42 +08:00 ![]() 大道 if err != nil |
![]() | 9 bipy 2021-11-09 13:32:47 +08:00 日经贴,甚至没有新颖的观点 |
![]() | 10 XTTX 2021-11-09 13:35:23 +08:00 ![]() 你这个肯定会又双引起语言大战。 我从 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 ![]() 大道至 nil |
![]() | 13 BeautifulSoap 2021-11-09 13:50:08 +08:00 Go 泛型要被解决了,但是 Go 这一言难尽无限套娃还不附带调用栈信息的 error 接口,估计还得继续用好多年 |
![]() | 14 masterclock 2021-11-09 13:53:05 +08:00 ![]() 我设计的语言 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 mogita 2021-11-09 14:19:35 +08:00 ![]() Go 语言,又名 Errlang 。 |
19 ciki 2021-11-09 14:29:34 +08:00 感觉 go 在国内用的比国外还多 |
![]() | 20 keepfun 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 ![]() |
![]() | 23 wonderfulcxm 2021-11-09 14:56:22 +08:00 via iPhone ![]() 上次看到大道至简还是 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 ![]() 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 ![]() 大道至简,为什么不去写汇编? |
29 jackmrzhou 2021-11-09 16:00:36 +08:00 via iPhone ![]() @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 ![]() 我总结了一下吹某某编程语言的人常有的两个特征: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 ![]() 满天飞的 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 你说的都说,但今天.NET6 出了,被他们吹得我都想去试试 C#了 |
![]() | 42 ktqFDx9m2Bvfq3y4 2021-11-09 17:45:10 +08:00 via iPhone ![]() @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 ![]() 判断一个语言好不好,看那些国家用就行了,Go 和 Java 都是典型的只有中国在用的,怎么样就不用我多说了吧? |
![]() | 50 guanhui07 2021-11-09 18:39:34 +08:00 大道至 nil |
![]() | 52 saturn7 2021-11-09 18:53:39 +08:00 ![]() 性能被 C++, Rust 按地上摩擦,生态,GC 又不如 JAVA ,鸡肋选择。 |
![]() | 53 ncepuzs 2021-11-09 18:55:23 +08:00 ![]() @JudyHal 无知傲慢又愚蠢 「回复了 josephok 创建的主题 Go 编程语言 再来吹一波 Golang 判断一个语言好不好,看那些国家用就行了,Go 和 Java 都是典型的只有中国在用的,怎么样就不用我多说了吧?」 「回复了 passer9527 创建的主题 问与答 一个疑惑:为啥很多初创公司不选择最主流的技术栈? Java 是一个本来就应该死掉的语言,硬是被国内这些培训班救了,可以说没有中国,Java 这种古董语言早就进垃圾桶了,还是把眼界打开多去看看 Go 吧,设计理念会让你得到空前的享受」 |
55 aababc 2021-11-09 19:04:13 +08:00 ![]() 个人感觉,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 ![]() go = python + c --- go 是一门 get 到了后端程序员 G 点的语言, 用这个公式来表达再恰当不过 |
![]() | 59 cmdOptionKana 2021-11-09 19:31:10 +08:00 ![]() @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 ![]() 「 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 交互,吐了,看帖 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 ![]() 我还是喜欢 python ,除了速度慢 go 其实就那样,该加的特性不加,enum 都没有,反而 protobuf 里有,又要用代码生成实现一次 不该加的特性加了,比如比较 nil interface 的时候非要比较 type 和 value 两个地方,太傻逼了 |
![]() | 75 ktqFDx9m2Bvfq3y4 2021-11-10 02:45:40 +08:00 via iPhone @halfer53 #67 嗯,纽村。 |
![]() | 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 ![]() 大道至简,我发明的语言“太极”,语法就两个字“阴”和“阳”。阴为 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 ![]() 我喜欢 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 hikarugo 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 |