11

为什么要学go语言,golang的优势有哪些?

 3 years ago
source link: https://studygolang.com/articles/32000
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

在过去几年,有一门崛起的新语言:Go 或者 GoLang。没有什么比一门新的编程语言更令开发者兴奋了,不是么? 自从我开始学习golang后,我便放弃了我的php大业,虽然php号称“php是世界上最好的语言”,但是通过实战证明,golang更香甜。

为什么要学go语言?

扯太高大上的优势我也说不上来,我就从我切身经历的几个方面说说我为什么学golang吧。这些都是真实的需求对比,它制约着我前进的步伐。

在php开发的时候,我经常遇到一些不太好解决的问题:

  • php只能单线程执行任务,在比如在采集任务中,它需要抓完一个网页,再接着抓第二个网页,这效率严重低下,无法忍受之痛。虽然在服务器上跑可以使用计划任务开多个php进程,但是内存开销又变得太大了。
  • 在用php开发的网站中,url请求的内容只能等服务器端执行完毕才能响应给客户端,无法异步执行。这个问题比较头疼,比如提交的连接要检查页面状态,提交的时候直接检查的话,就需要用户等待较长时间,虽然可以变相使用计划任务配合执行,但是终究不完美,并不是我想要的解决方案。
  • 在php中,如果程序有比较多curl请求网络任务,并且连接迟迟没结束的话,它很容易就导致网站出现502的问题。虽然可以通过设置curl超时时间来降低发生频率,但是它始终是一个悬在头上的问题。
  • 大佬公司都在转go,七牛、阿里、百度、腾讯、头条、京东、哔哩哔哩等。跟上时代步伐,才不会被时代淘汰。
  • 执行速度问题,我只想让网站更快的展示给用户。

以上的种种,导致了我要寻找一门语言去克服它。通过多方对比后,golang可以完美解决我遇到的问题,所以,我就开始了学习golang之旅。

golang的优势有哪些?

网上很多关于介绍golang优势的文章,无异于都是在说硬件局限性问题、goroutine、直接在硬件上跑、易于维护、google背书等。这些优势我就不再一一重复了,因为大家搜索答案的时候,已经多次看到了,我再补充一些其他优势。

  • 简单好记的关键词和语法。golang语法简单,这个是真的简单,即使从来没接触过过编程的用户,都可以轻松上手,比c++、java更简单易学,甚至比php学起来都轻松。与同为强类型语言的比c++比,更是简单得多。虽然简单,但是实现起功能来,一点也不含糊。
  • 更高的效率。更快的开发效率、更高的编译速度。比java、c++编译速度上快了N个数量级,golang拥有接近C的运行效率和接近php的开发效率。
  • 网络库非常强大,一般大块的功能实现,都有现成的库可以直接使用,不知道库地址都不要紧,你想要什么功能的实现,用浏览器打开github,或网速慢的用户打开gitee,搜索你想要的功能的关键词,选择go项目,基本上都能找到你想要的功能,然后,直接将他的库拉下来使用就可以啦。
  • 严格的依赖管理,本身禁止循环依赖,依赖的管理命令也很简单,go mod 命令就可以解决一切依赖。Go拥有强大的编译检查、严格的编码规范和完整的软件生命周期工具,具有很强的稳定性,稳定压倒一切。编译的时候就将可能埋雷的地方给掐死了,放心,这是一个很好的检查,可以让你的代码更规范。
  • 跨平台交叉编译,直接生成可执行二进制文件发布,比如我只有Windows系统,我依然可以直接编译出在mac、linux上可执行的程序,是不是很爽,省钱能手,还省去了分别部署环境的问题。当然更重要的是,代码不会暴露了,对于商业保护来说,特别是开发php项目,想要代码不被破解,简直是难于登天。这样一下子好了,发布一个执行文件,安全。这一点是很多人选择Go的最大理由,因为部署太方便了,所以现在也有很多人用Go开发运维程序。
  • 并发和异步执行不要太简单,一个go关键词就搞定了。前台提交了个url需要检测,go checkUrl(link)开启一个goroutine让它慢慢跑吧,不要堵住主进程。需要采集的网页数量有点多,一个个循环采集那是要等到何年何月才能采集完啊,开100个chan,100倍的速度跑起来,只要你的带宽足够大,就不怕它跑不快(此处建议拉一根500M带宽的网线)。
  • 严格的语言规范。变量一定要声明,用不到的包不能引进来,大写字母开头的函数、结构体变量是公开访问的,小写的是私有的,没有三目运算,严格的变量类型转换。所有写go的程序员都统一一样的规范,你只能按照这些规范来写代码。从此不再有为标准思前想后、争来吵去了,代码清晰了,可读性高了,可维护性自然就好了。

IzA3Y3n.jpg!mobile

golang 总结

golang的背后,真的是google,go的创始者都是大牛,他们开发和开源go出来,就是为了解决已有的老语言无法更高效的为软件开发工作的问题,golang实现了媲美c++的执行速度,比java更简单的语法特点、编译速度接近php语言等,让他成为开发语言中的一个新贵。它让开发变得更加简单。做开发,不就是要追求易学易用嘛。golang再合适不过了。

有疑问加站长微信联系(非本文作者)

eUjI7rn.png!mobile

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK