大家如何评价Go语言?

2013-05-16 10:30:18 +08:00
 artchencheng
想学学Go,不知道大家怎么看这语言的?
8722 次点击
所在节点    Go 编程语言
72 条回复
damngood
2013-05-17 13:06:25 +08:00
@luikore json 我用起来很舒服呀, Marshal UnMarshal一下就可以了.
配合Struct Tag很方便的呀.
luikore
2013-05-17 13:32:53 +08:00
@damngood 搞hello world没什么难度,但一般跟别的系统交互,json结构不确定的,方法一:先unmarshal到一个小的struct里去,然后对这个struct的域做条件判断,然后再分几种情况unmarshal到几种不同的struct里去...方法二:unmarshal到map通过反射一层层搞... 都很蛋疼
reusFork
2013-05-17 14:14:33 +08:00
@luikore 方法二再封装下还是能接受的 https://github.com/jmoiron/jsonq
notedit
2013-05-17 14:20:48 +08:00
有c 或者 python 基础的话 看个两三天就可以上手了
已经写了上万行代码了 很喜欢
luikore
2013-05-17 14:45:16 +08:00
@reusFork 这个和我给java写的封装差不多... 只是有个小坑:array和object都用字符串index...
damngood
2013-05-17 15:15:41 +08:00
@luikore "json结构不确定" 这个就不能怪Go的json包不行导致蛋疼吧, 应该是你这个情况本来就蛋疼..
内部系统交互甚至和别的系统的交互, 通讯格式不清楚的情况不多吧..
luikore
2013-05-17 16:01:22 +08:00
@damngood 有清楚的协议和结构固定不是一回事,你是没用过好用的,要不就是斯德哥尔摩了...
damngood
2013-05-17 16:32:36 +08:00
@luikore 这也能扯上斯德哥尔摩..

我的意思是在大部分情况下配合 Tag 使用起来够简单了, 一行代码就ok了..

在我用的的几种语言中, 就系统自带的库而言, 已经是很方便的了.
xpfd
2013-05-17 16:45:43 +08:00
@hooluupog 真心不看好王垠 嘴炮一个 屁事没干成 净发些牢骚 浮躁的要命
wodemyworld
2013-05-18 08:51:04 +08:00
@fx 执行效率能够接近c又如何。。。。。在已有的语言中已经可以满足这种需求了,有什么十足的理由让你一个人换自己熟悉的编程环境、库、历史代码呢,go生态环境也不完善,如果使用go,一定是它会代替某种语言,但目前看来,没有哪种语言可以被go替代
cassyfar
2013-05-18 08:57:56 +08:00
@nine 单进程跑满多核 说明了什么? 难道Go能单thread跑满多核?!
damngood
2013-05-18 09:47:24 +08:00
@wodemyworld 又的时候没啥理由, 仅仅是 for fun, 又的时候是被这门语言的一些特性给吸引了, 也有人是工作需要.. 一句话, 这都是缘分那.

至于我自己, 这门语言有很多地方还蛮合我口味的, 比如,
Go routine
Error/Exception 处理方式
C 熟悉的味道
允许多个 Function 返回值
对面向对象体系的淡化
等等...

当然要是能支持 Macro 就更好了, 跟别提见识了 Lisp Macro 之后的那丝丝遗憾..

当然开始去用 Go 仅仅是for fun, 以上都是使用了之后感觉比较舒服的地方.

至于库的问题嘛, 其实标准库里面提供的一般常用支持就不少.
第三方的库常用的也基本有. http://code.google.com/p/go-wiki/wiki/Projects 这个页面包含了一些常用的第三方库, 而且还有不少库没有收录进来. 实在没有需要的库就自己写一个然后github一下吧, 一般来说也花不了多少时间的. 这样慢慢的就啥也不缺了 :)

特别是最近看到又拍云也有提供 Go SDK, 当时就觉得有点小意外..

要说"可以替代"这个问题, 任何 Server Side 语言理论上都是可以被 Go 替代的, 只是个有没有必要的问题了.

用不用一门语言, 这都是看一个缘分..
skywalker
2013-05-18 10:19:31 +08:00
@wodemyworld 现有语言中有哪些满足下列需求:

1. 效率接近C
2. 可以生成native的可执行程序
3. 支持GC
4. 对并发有很好的支持
5. 编译快速

况且语言设计中的很多细节其实是很难一两句话说清楚的,比如defer, interface, slice等等,这些东西用的时候都是很方便的。另外,go其实为程序员考虑很多,比如自带了gofmt,让你不用再为代码风格这种破玩意儿争论不休,还有godoc,都很方便。

这些东西不是你瞄一眼就能体会的,只有使用了你才会体会到它的方便之处。

另外go的目标不是替代什么语言,每个语言都有它的优势,但是已经不少公司开始用go替代python/ruby了。
nine
2013-05-19 09:47:15 +08:00
@cassyfar
在写web应用的时候,首先不需要webserver来做反向代理了,然后不需要一个php-fpm 、uwsgi 的东西来管理进程了。
要做的只是安装一个任意linux版本,iptables里把80端口打开,push一个二进制程序并启动它。
让运维变得更无所事事,让开发不再为部署头疼,这还不算逆天么?
wodemyworld
2013-05-19 22:16:04 +08:00
@skywalker 不少公司,请举例说明哪个公司做项目用go了,最后成功了么,哪个产品用go了,成功了么
如果不是替代某种语言,那它有什么用,现在的语言都已经满足要求了

python + c++ 配合使用基本上所有的需求都没问题啊,另外那个并发问题根本就是个伪命题,不能说你自己不会搞并发编程就说go比其他语言高级,这是能力问题,不是go本身的优势
可以说它把常用的算法编译了让你用,其他语言也有很好的高效的库啊,为什么不用呢,新的不代表比现有的好,只能是多个选择
hooluupog
2013-05-19 22:23:07 +08:00
@wodemyworld 今天刚看到hacker news上面一个新闻https://news.ycombinator.com/item?id=5731706 ,dotcloud用go重写了docker,这个东西之前用python写的。国内360和七牛都用到Go了,你可以了解下。Go相比python和rails有什么优势?目前我说不上,因为涉及的不深。但据我了解有一点是肯定的:节省了硬件。
reusFork
2013-05-19 23:09:05 +08:00
@wodemyworld golang可以不用异步的方式来写并发程序,这是个很大的优点
wodemyworld
2013-05-19 23:48:11 +08:00
@hooluupog 说一千道一万,用哪种语言的程序员性价比高那么哪种语言就收到企业欢迎,然后用的人就多起来了,可参考java;整并发的人不是价高么,用go就可以雇佣价低的弄并发的程序员了。有并发编程经验的人自己其实早就有一套自己的框架了,也很成熟,只不过,人家贵,现在找到便宜的了,如果此人离职,那么又可以雇佣其他人继续搞,不会像以前那种人走技术也跟着走了。
这个是企业会考虑的东西,而不是这些公司用go是因为语言本身有什么其他语言干不了的事情
skywalker
2013-05-20 07:07:24 +08:00
@wodemyworld 按照你的理论,dotcloud用了这么多python,应该有一套非常成熟的并发框架啦?那为啥还费劲的去搞自己不熟悉的go?37 signals做rails的时候为什么不用更容易招到人的php,而要用那时候还很非主流的ruby?twitter为什么不继续用ruby而转向scala,按照你说的他们应该有一套成熟的框架了啊?

并不是图灵完备的语言都是等价的,做一样事情还是有难有易。你用C费死劲的玩意儿用go可能是很简单的。
jjx
2013-05-20 07:38:47 +08:00
看场合的,我有个设备固件升级的服务,原来用python , crc部分必须用cython做,否则太慢,练习着改go后 ,性能自然快很多。 不过 老实说也没有这个必要,原来也够用了。但对于一些对性能要求比较重要的场合,这样的升级还是有必要的。 不过python还可以尝试pypy,并非只有go这样的可选。至于异步,并发部分,python也有太多简单的选择 .

以go 替代python ,受限于项目类型, 比方说,企业应用,像进销存, 我是死也不会动这种念头的

所以,吸引python人员的,只是go比c++简单,但能直接上来做一些现代化项目。又能达到一定的性能。 go 现在最重要的是达到它的性能承诺,并且稳定,要人们普遍接受,现在估计还得一些时间。

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

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

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

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

© 2021 V2EX