Golang Go语言是个好语言

发布于 1周前 作者 wuwangju 来自 Go语言

Golang Go语言是个好语言

最近在学 go。

去年 Qcon 听了下 go 语言介绍,很多特性当时听怕了,还是让我觉得有点不习惯。不过实际看了下,其实也还好。 如果能够像 python 一样简单明了,少一些约定,就更好用了。(当然 python 的约定也不少,设计理念也要画不少脑力去想,比如鸭子方法)

感觉很多操作都很需要技巧(这点 py 也是,不过 py 的技巧用的很舒服),需要技巧就需要对语言很熟悉的了解,不像 Java、C#一看看上去就很稳重,不搞事情。

  1. 轮子稍显有点少。不知道看哪些主流轮子。求各位大佬推荐。
  2. 想加入一个 go 的社团。python 的社团很强大(至少在国外是很强大,去年国内的 pycon 开成那个样子,和 python 语言的热度形成鲜明对比)。不知道有没有大佬引进圈子。
  3. 各位大佬有没有好的项目或者轮子推荐一下,我想看着代码学 go。最好是能体现语言特性和设计思路,但是入门难度也不要太大的项目。比如,python 下我就会去看 sentry 或者 celery 或 flask 的源码(吐槽下 celery 的源码,:-()。最好是类似于这种类型的项目,能看到语言本身的特性。

谢谢各位大佬推荐。


更多关于Golang Go语言是个好语言的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

50 回复

更多关于Golang Go语言是个好语言的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


我觉得 Go 轮子不少啊,楼主有这种感觉应该是和 Python,Java,JS 比吧
我认为一个编程语言,各方面都有一个能用的轮子,并且生产环境验证过,当你想用的时候能找到,这就基本够了
太多的轮子会增加选择成本,影响新入行的人的学习,加重”派系分化“,说是社区活力的体现,其实同时也体现了社区的不稳定,特别对于比较小众的语言,社区在特定方向上有限的精力被分散在不同的具体项目上,旁观者会发现轮子多而不精(是不是说得有些恐怖了)
你看 JS 都淘汰多少轮子了

看 go 的标准库源码可以吗

go 主要看容器 /微服务那块就行了,
web 开发性价比不高,社区也比不上容器 /微服务 /中间件之类

这就是很尴尬的地方,我完全赞同 的观点,只需要一到两个有特色的主流框架就好了,awesome – go 有点略多,新手有点懵

至少现在看 go 的 web 框架轮子也多到泛滥,设计风格未必相一致,但目的都是在同一件事而重复造轮子

Go 语言的优点,缺点和令人厌恶的设计 https://studygolang.com/articles/12907

业务上的轮子还是不多

应该是原来用 go 的不涉及具体业务场景

不过随着 go 进入具体的业务场景, 这些轮子应该也会多的吧

去年 qcon 听到小哥很热情洋溢的说 exception 在前的设计,并且大概说到"我觉得对的,应该不会改"的时候,被吓到了。但是 go 的性能真的好。

我觉得关于社区的坏处说的也对,但是社区火热也是好的,比如同一个方向大家都造轮子,但是思路上不同,社区能够很快筛选出最合适的最热门的来,比如,python 的 backend,3.6 协程出来的时候,sanic 等异步框架大家都叫好,但是很快使用度就证明了这不是协程使用的正确姿势。包括 tf 和 pytorch 之争也一样。

听说 go 用 tab 缩进,我就吓得再也没看一眼

瞎说,没限制用 tab 还是 space,或者几个 space

你应该找个用 go 的公司,啥社区都不好使,天天用你才知道,这个语言就那么回事

这个格式社区总是有一个标准的吧,我记得好像是用 tab

等我学完,我就成我司全村的 go2school 的希望了

go 的轮子也超多了,不爽的是大部分轮子都不温不火,想找些第三方包很难判断哪个好,哪个比较稳定。

我最近在看 python,想请问一下,sanic 如果不是现在协程 web 开发的正确姿势,那么正确姿势是什么?

sanic 是基于 uvloop 的,很多设计有点奇怪。如果做 web 的话,会选择使用常用框架加 uwsgi 或者 gunicorn,或者 gevent

sanic 很大的问题在于,完全没有办法魔改框架,因为它自己就是魔鬼[手动捂脸],协程的优势在于阻塞 io 会有性能上的突破(主要是躲开了 gil 大锁),不幸的是 asyncio 的非阻塞 io 框架都比较弱,没有经过生产的检验,比如就没有好的协程 orm。aiohttp 是很好的库。
django 的最新版本已经支持协程了,了解一下。
celery 的 future feature list 里面也已经有了对协程支持了。

我觉得 sanic 这个姿势没问题.python3 已经发布这么多年了还不是一大票人用 py2?async/await 出来之后大家觉得很棒,但是并不会马上切过去而已.同时 sanic 现在也并不成熟,3.6 和 3.7 下的代码都不能通用.

python web 这么多年下来,能生存就意味着协程不是必要的.说协程不是 web 最佳实践我是认同的.没那么大必要.uvloop 提供的所谓 blazing fast 更多是一种炫技

首先一些被墙的包会让你抓狂 虽然可以使用代理

嘿嘿嘿,路由器自带 ss,在办公室写代码感觉还是很舒服的

那么到底用哪个包管理工具呢?

我只是专门挑坏处说的

可以用 go mod

可以吐槽下去年的 pycon (我是北京和成都场的负责人。。

欢迎黑&提建议。。

今年继续改进。。

实际上目前的协程库都没法规避 GIL。没法规避 GIL 带来的副作用也很多。。典型的一个 block,全局 block。

而且 asyncio 就不说了,17 年的爆出来的 SSL 链接泄露问题到现在都没修,官方直接劝退

可以参看我之前的吐槽

https://www.zhihu.com/question/266094857/answer/304655007

和官方的 BPO

https://bugs.python.org/issue29406

所以 Python 的协程路还长。。

有种背后说坏话被抓到的赶脚。[给大佬跪了]

可惜我们做大型游戏开发 go 完全不能用

go 没有 sklearn、gensim 和 pandas 这种生态,如果有了,果断放弃 python

对运维来说,go 太方便了。就一个二进制 平台通用。在 k8s 跑起来简单,镜像小,性能等等特点。现在很大公司后端微服务等底层基础架构用 go 开发的多。

golang.org 的包在 github 有 mirror

有 go fmt 你慌啥,go 格式都是统一的

编译后是方便,但是 docker+k8s 对很多语言和框架都很友好了,运维难度都大大降低

go 还是有一些不方便的,而且 go 作为工程化数学语言还是要比 r 和 python 弱一些

go 很好玩 对于我这种写了 10 年的 C/C++的来讲 简直不要太舒服

我都是要换行了,直接回车键,IDE 自动缩进

就想问一个问题,商业公司能提供闭源的 go SDK 供二次开发吗? 不能的话还是洗洗睡吧。

世界上最好的语言

不存在……随意吐槽,我们本来就有很多不足,吐槽才能进步

go 最蛋疼的地方是没有模板支持,interface{}到处飞,增加代码冗余度。没有 exception,error 检查嵌套又增加了代码冗余度。go2 已经着手解决模板这个问题。广告一下我的 go 项目
https://github.com/opentradesolutions/opentick

确实,Golang(通常简称为Go)是一种非常出色的编程语言,它在多个方面展现出了其独特的优势和魅力。

首先,Go语言的设计哲学强调简洁和高效。它的语法清晰明了,学习曲线相对平缓,使得开发者能够迅速上手并专注于业务逻辑的实现。同时,Go语言提供了强大的标准库和工具链,支持并发编程、网络通信、文件处理等多种功能,极大地提升了开发效率。

其次,Go语言在性能方面也表现出色。它编译生成的是机器码,执行速度非常快,能够满足高性能应用的需求。此外,Go语言的内存管理也非常高效,通过垃圾回收机制自动管理内存,减少了内存泄漏和碎片化的风险。

再者,Go语言在社区支持和生态发展方面也值得称道。它拥有一个庞大且活跃的开发者社区,提供了丰富的第三方库和工具,涵盖了从Web开发到云计算等多个领域。这使得开发者能够轻松获取资源和支持,加速项目的开发和迭代。

最后,Go语言还非常注重跨平台兼容性。它能够在多种操作系统和硬件平台上运行,无需进行额外的适配工作。这使得Go语言成为开发跨平台应用的理想选择。

综上所述,Golang作为一种简洁、高效、性能出众且生态丰富的编程语言,确实是一个好语言。它不仅能够满足各种应用场景的需求,还能够提升开发者的生产力和代码质量。如果你对编程感兴趣,不妨尝试一下Go语言,相信你会爱上它的。

回到顶部