技术的突飞猛进,推动着世界上许多突破性的发现。Golang ,作为如此革命性的发明,早已征服了整个世界。

当我们接触到 Golang 后,开发领域中已经发现了很多种(用 Golang)带来进步和革新的方法。在语言的万马千军纷纷争奇斗艳时,Golang 早已证明了自己才是最大的游戏规则改变者。

虽然对于初学者来说,这种新生的语言可能有一点点复杂和难以掌握,但是当你做了充足的练习后,你会很容易地处理 Golang 语言。

在(开发者)熟识关于 Golang 的一些基础知识之前,他们往往就已经被这种高级编程语言逼疯了。好了,闲话少说,我们一起来研究下这篇博客摘录。

本文是 Go语言中文网组织的 GCTT 翻译,发布在 Go语言中文网公众号,转载请联系我们授权。

Golang -- 无限可能

你能相信在过去的几年中 Golang 的受欢迎度像飞火流星一样如此飙升吗?作为一种领先业界的结果导向的编程语言,Golang 已风靡全球,事实如此。

虽然几门其他的语言如 C, Java 仍在统治编程领域,但是一些能为现代计算带来更好结果的新模型也被引入了,尤其是在云计算中。

Go 之所以越来越受欢迎,主要归功于的它的轻量,还有它完美适配几乎所有的微服务架构。容器宠儿 Docker 和 Google 的 k8s 也使用了 Go 。

除了如此不可思议的受欢迎外,Go 凭借它(相对其他语言)有利的特性在数据科学领域也站稳了脚跟,Go 的这些功能正是数据科学所需要的,用(这些功能)来(为数据科学)带来更好的效果。

作为一种高级编程语言,Go 可以在多个方面方便开发者,诸如原生的并发,垃圾回收机制,等等。使用 Go 语言时,开发者不需要再依赖自己减少通过编码解决内存泄露等问题的必要的能力。Golang  的一些其他特性,可以恰到好处地适配解决数据科学和微服务架构的问题。

因为前面提到的这些特性,全球越来越多初创公司开始使用 Go 语言。Go 语言中包含了一套 Tensorflow 的 API ,还有一些项目如 Pachyderm 是用 Go 语言精心打造的。

Cloud Foundry 中也有一连串的零部件是用 Golang 写的。有趣的是,这份列表定期添加用 Go 语言写的不同(项目)名字。

推荐阅读:Advantages of Using Golang for Your Next Web Application Project[1]

Golang 为何无可替代?

Golang 开始为开发领域带来进步和缓和一些顽固问题的历史并不长。在追求为新世纪的开发者们提供一个统一和无缝体验的过程中,Golang 毫无疑问地已经一步步为自己开创了一片天地。

但是,Golang 真的名副其实吗?Golang 真的无可替代?它真的有资格坐头把交椅?我们一探究竟。

极简是 Golang 的杀手锏

极简是无与伦比的,Golang 毫无疑问已经把它发挥到了极致。很多表现很成功的语言像 Rust 、Scala 等都有很复杂的特性。而且,它们提供了先进的内存管理和类型系统,在开发领域表现得很优秀。这些语言也曾像 C# 、C++ ,一时成为主流语言,发挥了它们全部的能量。

Golang 走了一条稍微有些不同的路线:合情合理地摒弃了很多此类(上述)特性。下面列出了 Go 摒弃的几个特性和能力。

  • 没有泛型

泛型和模板是不同编程语言区分于彼此的重要体现。加入与错误信息关联的复杂的泛型,往往让语言变得晦涩难懂。Go 的设计者们,抛弃了这部分,使得 Go 语言变得更简单。无疑,它虽然有争议但仍是个明智的设计。

  • 一个可执行文件就够了

Golang 中确实没有与可执行文件隔离的运行库。能生成一个通过复制就可以轻易部署的的二进制文件是一项不错的能力。版本不匹配或依赖问题出现的风险被消除,要感谢 Golang 的这个特性。此外,这个特性也是基于容器开发的工程的巨大福音。

  • 没有动态库

Golang 在 1.8 版本作了微调,现在开发者们可以通过插件包来加载动态库。但是因为这个特性并不是安装 Go 时自带的,所以它仍然只是为某些特定的功能而存在的扩展。

Go 之所以流行,协程功不可没

从一个非常务实的角度看,Go 的协程是最有魅力的几个方面之一。专家们通过 Go 协程可以轻易(在单核机器上)实现出多核机器的能力。

  • CSP

C. A. R. 是 Golang 并发模型的原型。最初的想法是,规避掉所有的在劳动密集型和容易出错的多个运行线程间共享内存的同步问题。

  • 协程同步

另一个等待协程停止的有效的方法是使用同步组。你可以声明一个等待组的对象,随后在每一个可以正常调用它的 Done() 函数的协程在完全停止时把声明的对象传给它。

  • channel

Go 协程通过 channel 可以轻松地实现互相访问信息。你可以创建一个 channel 变量后把它传递给协程。使用者既可以从 channel 接收数据,又可以向 channel 发送数据。

无缝处理错误

Golang 中处理错误的概念是(与其他语言)完全不同的。即使是普通的函数,也能顺利地返回一个错误作为它的最终返回值。你即便不能在协程中返回一个错误,也可以通过其他的方式让错误逃逸到协程外的作用域。

把一个内含数据是 error 类型的 channel 传给一个协程无疑是一次很好的实践。使用者也可以使用 Golang 把错误写到数据库、log 文件或请求远程服务。

结语

由于技术的突飞猛进,软件部署以及交付的概念已经发生了很大的变化。微服务架构在敏捷开发中扮演了一个关键的角色。绝大部分新生的应用是按照云原生且可以利用云平台提供的多种云服务这个思路设计的。

世界上有很多种编程语言,每种语言都有它独一无二的特性。但是,作为一种完美无瑕的工程语言,Golang 的设计方式使其可以满足新的要求。Golang 是为云而写的,由于其构建和对并行操作的掌控而获得了很大的欢迎。

过去的几年中,Go 见证了自己受欢迎度的一路高歌,尤其是在现代数据库方面。虽然 Go 如此风靡一时的很大一部分原因是跟谷歌的支持有关,但它在开发领域中独一无二的方式才是让它驰名中外最关键的因素。

如果你正在为你的事业寻找  Golang Web development company[2] ,请从我们这儿雇佣 Golang 开发专家作为你的一站式软件开发伙伴。


via: https://www.mindinventory.com/blog/what-makes-Golang-stand-apart-from-other-languages/

作者:Paresh Solanki[3]译者:lxbwolf[4]校对:polaris1119[5]

本文由 GCTT[6] 原创编译,Go 中文网[7] 荣誉推出,发布在 Go语言中文网公众号,转载请联系我们授权。

参考资料

[1]

Advantages of Using Golang for Your Next Web Application Project: https://www.mindinventory.com/blog/advantages-of-Golang-for-web-application-project/

[2]

Golang Web development company: https://www.mindinventory.com/Golang-development.php

[3]

Paresh Solanki: https://www.mindinventory.com/blog/author/pareshsolanki/

[4]

lxbwolf: https://github.com/lxbwolf

[5]

polaris1119: https://github.com/polaris1119

[6]

GCTT: https://github.com/studyGolang/GCTT

[7]

Go 中文网: https://studyGolang.com/

解密为何 Golang 能从众多语言中脱颖而出相关推荐

  1. STM32为何能在众多单片机中脱颖而出?

    现在STM32资料教程如此丰富,但还是很多人学不会- 假如STM32像10年前的NXP单片机资料一样少,估计学不会的人会更多. 大家好,我是无际,一个踩坑单片机开发10年的老油条. 这些年,我用过很多 ...

  2. 分享八个软文推广小技巧,让你在众多同行中脱颖而出!

    软文推广作为现在主流的推广形式,想要做很容易,但是想要做好就要多下点功夫了,其实 现在大多数公司做软文推广也是在囫囵吞枣,雨里雾里的,其实想要做好软文推广就要多去 注意细节,俗话说细节决定成败,今天这 ...

  3. c语言c2182是什么错误,C语言中一种更优雅的异常处理机制

    上一篇文章对C语言中的goto语句进行了较深入的阐述,实际上goto语句是面向过程与面向结构化程序语言中,进行异常处理编程的最原始的支持形式.后来为了更好地.更方便地支持异常处理编程机制,使得程序员在 ...

  4. golang go语言_在Go语言中无需反思即可使用Lodash的好处

    golang go语言 by Tal Kol 通过塔尔科尔 在Go语言中无需反思即可使用Lodash的好处 (The benefits of using Lodash in the Go langua ...

  5. 【Golang第6章:排序和查找】golang怎么排序,golang的顺序查找和二分查找,go语言中顺序查找二分查找介绍和案例

    介绍 这个是在B站上看边看视频边做的笔记,这一章是GO语言的排序和查找 有golang怎么排序,golang的顺序查找和二分查找,go语言中顺序查找二分查找介绍和案例,具体请看[文章目录] 配套视频自 ...

  6. Golang标准库-syscall(什么是系统调用/Go 语言中的系统调用)

    文章目录 一.什么是系统调用 二.Golang标准库-syscall 1. syscall无处不在 2. syscall demo举例: go版本的strace Strace go版本的strace ...

  7. 路由器web网页管理界面goahead和Lighttpd、jQuery(JavaScript(js)众多框架中的比较老的一个)、超文本标记语言html

    一.路由器web网页管理界面goahead 1.开源的轻量级WEB Server很多,比如GoAhead.Shttpd.Thttpd.Lighttpd.BOA.mathopd.minihttpd.ap ...

  8. Context是怎么在Go语言中发挥关键作用的

    Context 是 Go 语言独有的设计,在其他编程语言中很少见到类似的概念,用一句话解释 Context 在 Go 语言中的作用就是: Context 为同一任务的多个 goroutine 之间提供 ...

  9. 在 Go 语言中增强 Cookie 的安全性

    本文讲的是在 Go 语言中增强 Cookie 的安全性, 原文地址:Securing Cookies in Go 原文作者:Jon Calhoun 译文出自:掘金翻译计划 本文永久链接:github. ...

  10. gRPC 在 Go 语言中的安装与简单实践

    现在非常流行微服务,而 RPC 框架是微服务中不可或缺的一环,gRPC 是其中一个非常出色的 RPC 框架,所以借此机会来记录一下 gRPC 在 Go 语言中的安装使用以及运用. PS.刚弄好 WSL ...

最新文章

  1. 微信小程序开发简易计算器改进版
  2. 【IT资讯】年薪170万码农征友,条件让网友炸锅……
  3. 51nod 1344 走格子【贪心/前缀和】
  4. 机器学习数据倾斜的解决方法_机器学习并不总是解决数据问题的方法
  5. mysql8 修改权限_MySQL8修改重置root密码,远程连接权限设置
  6. G1 vs CMS vs平行GC
  7. C#中ToString()格式详解
  8. 吴恩达团队新研究!用MRNet进行膝关节磁共振影像诊断 已媲美医生 | 论文
  9. linux ls -l 命令 详解
  10. 远程摄像头软件mjpg-streamer使用指南
  11. ubuntu删除OpenCV
  12. 2021国内地址数据库表mysql
  13. redis key操作大全
  14. 【用友凭证打印】自定义纸张尺寸对照表
  15. dell 服务器 重装Linux系统
  16. 注册登录页面模板 农业集团 金星农业
  17. STL queue:男孩被绑架了!
  18. 华为设备配置PIM-SM命令
  19. Web_使用pinchzoom插件实现图片手势缩放
  20. c语言wscript.echo用法,2.4.3 用Wscript.Echo显示简单的文本信息

热门文章

  1. 解析P2P金融的业务安全
  2. 如何设置QQ空间免费背景音乐
  3. 鸿蒙时代实力排名,混沌氏(浑沌)、鸿蒙氏,盘古开天辟地时两个最强大的部落首领?...
  4. toft 测试用例rat_测试案例如何区分RAT,FAST,TOFT,FET | 学步园
  5. linux有线无线同时使用教程,巧用无线路由器 让有线、无线网络互通
  6. 创业1年半,烧光130万:我总结了哪些教训?
  7. Android使用SubsamplingScaleImageView完美查看超大图片
  8. 【听课笔记】复旦大学遗传学_10肿瘤遗传学
  9. 多元逻辑回归 - 小技巧(一)
  10. Linux 中的 owner,group,others