Go 到底优势是在哪里?

2019-10-17 17:24:00 +08:00
 upday7

我们现在的项目是用的 django+restful 做接口,最近接触到很多 go 的内容,被网络上的讨论有点弄晕了。如果做接口后端,为什么 go 比 python 有优势,除了速度这些还有什么?

22178 次点击
所在节点    Go 编程语言
153 条回复
zzlettle
2019-10-17 20:25:52 +08:00
别撤那些运行效率
比如开发个人 web,公司小的网站,就算是一个中小型的商城
我觉得 django 完全能对付
哪有那么多并发啊
你们公司做什么的啊
有那么大的需求吗?
但开发效率完胜 go
现在 go 有哪个框架能跟 django 这样开箱即用匹敌的
一大堆第 3 方开源的库,自己慢慢组合起来
这就是为什么你在网上看到最多的关于用 go 开发的文章
都是写 api,restful
因为用它来开发个传统 web
真要人命
反观 django,开发一个传统型,也就是说不是那种前后端分离的网站
太轻松了
所有的工具 django 都帮你做的好好的
只要把数据模型构建好
基本网站就算做完了
就算写接口
不复杂的话,django 也是能很轻松完成
复杂的话,go 一样做起来麻烦
本来写逻辑,用 python 就是有优势
所有 go 的优势就是在大并发的时候
哪有那么多大并发
全国才几个淘宝,微信啊
一般的需求我完全不知道 python django 哪些不能满足
其实一大部分用 go 的情况
都是那些人在炫耀
炫耀自己用上了所谓的高大上的 go
因为现在 python 太普及了
自己也跟着用,感觉不能提现自己的实力
反正老板也不懂技术
看到那些大公司很多用了 go
自己也要用
都是有病
l4ever
2019-10-17 20:32:48 +08:00
@kidlj 所以你以为 Django 不能单独跑?
zzlettle
2019-10-17 20:36:55 +08:00
用 python
9 层以上的逻辑基本可以很轻松用
for in 循环来搞定
字符串,数据处理,就像玩一样
反观 go
几个数据类型,变来变去,参数写的死死的
函数方法
接口
一个简单小逻辑
变着方的折磨人
然后写出来还觉得自己多了不起
看我用这么复杂的方式写出来的代码
你看不懂吧!!!!!

go 大家都在说学起来简单,关键字就那么几个
但是用起来,你就知道了
同样实现一个逻辑
我靠,它的语法思考方式真的
反人类

上面 import 了一个库
下面修改下,没有用到
就在那里报错

真是有病


反正你的项目要不是真的所谓百万并发
用 go 真的是嫌你睡眠时间太长
还是你加班时间太短


如果用来写个小小的 10 几行代码就能用的 server
用 go 确实有优势
一旦是那种.不大不小的中小型项目
go 就处于不上不下的尴尬处境
恰恰这种中小型项目是最多的
hitrust
2019-10-17 20:37:00 +08:00
@zzlettle 说的不错。
效率是相对而言的
bingmang
2019-10-17 20:44:44 +08:00
技多不压身
TangMonk
2019-10-17 20:49:52 +08:00
@zzlettle #43

的确,

1. import 的包如果不使用, 他要报错. define 的变量 not use 也要报错.

我现在先 import 或者定义好, 一会儿用不行么?

或者 debug 的时候要注释掉一些代码, 还得找到之前定义的地方再注释一遍

2. 没有 exception, 每个 err 都要去 check and panic 一下

等等...

golang 只能写点小工具挺合适, 大型项目还是用 C#(dotnet core), java 之类的
abcbuzhiming
2019-10-17 21:03:21 +08:00
@TangMonk 不会,.net core 会和 java 抢占地盘,go 的特点和他们不同
TangMonk
2019-10-17 21:13:47 +08:00
@abcbuzhiming #47 现在 go 能做的, .net core 基本都能做啊
Reficul
2019-10-17 21:17:41 +08:00
争啥,爱用啥用啥。都 9102 年了还在争,我要来说一句,PHP 是最吼的!
qile1
2019-10-17 21:28:58 +08:00
python 和 go 对比吧

python 还有个 tk 做界面,go 想开发个 c/s 程序 现在好像不好弄
python 对比于 pb 程序慢很多,我处理检验设备传过来的结果数据,存到数据库慢的不行,不过可以接受
dbskcnc
2019-10-17 21:44:41 +08:00
语言简单,不管谁写出来的代码,只要稍稍用心就可以看得懂在干什么,不需要烧脑解码某些天书语法
交叉编译,部署都超级方便
最主要的是基本会点编程的只要稍加学习都能用它干活,做好 review 和 ci,体验还是不错的,搭配 go mod,goland 使用效果出奇的好
hakono
2019-10-17 21:58:20 +08:00
从来发布置的角度来讲
你要 django 能跑起来
至少必须得有 django + uwsgi + nginx/Apache。

那么问题来了,uwsgi 的配置你要不要学着写? 写完后 nginx/Apache 的配置是不是也得要写?
这三者之间的交互搞错点东西就炸,初学者能在上面折腾死你,即便有经验的每次新环境配起来也是让你蛋疼

啥,你不会用 Docker 简化配置过程? 那么你 docker 用法要不要学? Dockerfile 怎么写要不要学? docker-compose 怎么写要不要学? 而且正重要的是 Dockerfile 这东西你写完必须得 build 跑起来才知道有没有写错有没有 bug。 相性我,你在没有前人项目的基础上徒手写个 Dockerfile,大部分的时间全都是消耗在了 build - run - 出错 回头改 继续 build 的循环中。
而且这特么还没考虑到你写 docker-compose 配置也有可能会有坑。。。。



然后这时候我们来看看 go,服务写好了? 编译出来,可执行文件直接扔到服务器,`./hello_world` 成了,跑起来了,不用 nginx 不用 uwsgi, 不用搞破 docker, 并发,性能极好,你说,哪个爽?
okampfer
2019-10-17 22:08:10 +08:00
@TangMonk .NET Core 现在也可以编译为单个可执行文件了是吧?我的意思就是跟 golang 一样,不需要单独安装运行时,扔到服务器上就能跑。
back0893
2019-10-17 22:19:14 +08:00
@zzlettle 那我为啥不用 php?php 写 web 比 py 还轻松
back0893
2019-10-17 22:19:45 +08:00
简单,方便不就好了
clino
2019-10-17 22:33:12 +08:00
感觉 groutine 是杀手锏,其他的特点都没啥稀奇的
zzlettle
2019-10-17 22:35:16 +08:00
可以这么说
一个用 go 能开发出来一个哪怕是很简单网站的人
他对网络这块的知识要求就已经很高了
你说的那些什么配置
nginx
uwsgi
这些
相信如果你是个用 go 做开发的人
早就过了需要专门抽出时间还要去学习的阶段了
因为 go 做 web 开发是非常底层的一步一步组建起来的
你如果对底层这些不懂
你根本无法用 go 来开发

相反
一个用 python django 开发的人
真的对底层网络这些需要的知识不是那么高
因为所有的都封装好了
导致了
很多人,用框架开发了很多网站
其实他对网络的很多底层东西,懂得并不多
因为并不需要

然后你这个时候出来说
go 开发完了以后,配置时多么的简单
你看直接传上服务器,就能跑起来

那是因为你需要对跑起来之前很多的底层,自己处理

你说同样是一个人
目的是开发一个网站
到底是是哪个对开发人员友好

用 go 的话,你先要学习很多基础知识
有功夫学这些
我用 django,都已经开发完了
那些你所谓的配置
你真的是每次都写吗
不都是一套配置文件,全部项目都一样用
就是修改下里面 ip 和 web name
这个你说学起来有多难
或者说根本不用学,在网上找个案例,原样 copy 就可以了
很多人开发了很多网站
真的对 nginx 搞懂拉?
不都是用一份不知道哪里找的别人的配置修改下就能用了
跑一个网站,用的配置都是一样的

一个中小型项目,我就不明白
你搞出来这么多幺蛾子
又是 docker 又是 build 的
需要吗?
只要在环境里面安装了 python 还有数据库还有 nginx
数据库你用 go 开发就不需要装拉?
nginx 不就是一行代码就安装好了,配置文件修改下参数就行了

这就
就完事了

你说这些很难吗
比起学好那些 go 的 net http 底层的库
自己要处理好 cookie session 各种注入的预防
到处找第 3 方库,各种修改,把这些第 3 方的库整合起来

oh my god

人家 django 都是开箱即用
orm 完全傻瓜化
不是我说
你用 go 开发
用的是原生的 sql 库还是 gorm xorm 这些?
你自己说当初学这些用了多长时间?

学完了,用起来有 django 的 orm 方便吗?

我还没说 go 里面的模板了
有一个好用的吗?

现在 github 里面排名最高的一个模板处理库 pongo2,api 用法开发目标就是要完全和 django 的模板 api 一致
结果用起来还是各种 bug

你说到底哪个开发效率高
哪个对人友好?
wqxuan
2019-10-17 22:36:34 +08:00
后端,同样经验,go 钱多
est
2019-10-17 22:40:44 +08:00
python 其实也可以不要 nginx 的。 只是大家都无脑 gunicorn 了。。

golang 的优点还是很突出,快。
eoo
2019-10-17 22:42:57 +08:00
php 是世界上最好的语言 不接受反驳{滑稽脸}

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

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

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

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

© 2021 V2EX