Day1 Why Go?

What is Golang?

Golang又简称为GoGolang是一个始於2009年由Google开源的程序语言,由Google的一个团队与其他外部贡献者依同开发。Go旨於简化软件开发过程,尤其是对於复杂的架构与开发过程。

https://ithelp.ithome.com.tw/upload/images/20210915/20129737rWnrHnrUSS.png

Go是基於C语言开发的。并且也继承了C的规范语法,并在进行了一些更动与功能优化的情况下,允许开发者安全地管理内存。

Go承诺代码效率,这也让他们成为企业将产品微服务化的首选,像是以下的公司都有使用Golang进行优化或者是产品发开:

  • Google
  • Apple
  • Facebook
  • Docker

...etc

What Are The Advantages Of Using Golang?

1. Golang Is Fast

Golang是一门编译程序语言,这意味着他需要先被转化成程序能读懂的格式才能进行运行,与

Java类似。也因为Golang精简且去冗地开发流程,使他已经被证明运行效率优於Java以及Python。详情请见 Go vs JavaGo vs Python

2. Golang Is Easy To Learn

有别於C或是JavaGolang的学习时间与曲线会相对较短,尤其对於有着其他语言开发经验的开发者,因Golang是基於C开发而成,虽然关键字与语法略有不同,但有经验开发者能在Go身上找到其他语言的影子因而加快熟悉速度。

3. Golang Is Well-Scaled

最大的理由应该是Go有着Goroutine,它是个可以同时独立运行的process。

一个Goroutines仅占用2Kb,这也使得它在同时需要运行多个并发的process时可以很容易的扩展。Goroutine与Java的Thread不同,Goroutines 是non-blocking。你也可以当Goroutines当成是一个结合Javascript async approach与Java multi-threading好处的产物。

4. Comprehensive Programming Tools

作为一款开源的程序语言,它有着许多不同编译器、IDE以及插件的支持,你也可以从Github下载许许多多由Go所开发的专案。

5. Growing Pool Of Talent

基於 Hired ,Go荣登 #1全球最受欢迎的程序语言,目前也有越来越多的公司开始使用Go,这也表示有更多的开发人员开始学习Golang,因此学习Golang可能会为你的职涯带来更多的价值。

What Are The Disadvantages Of Using Golang?

1. Time Consuming

Golang比起一些dynamic programming language像是PythonPhp,还是需要较多的代码才能完成类似的功能。因为前者严格来说还算是一门简单的编译语言。

2. It's a young language

Golang目前只发展了十二年,还是个相当年轻的程序语言。也因此他的SDK亦或者是第三方套件比起其他的程序语言来说少蛮多的。

3. Golang Doesn't Support Generic Functions

Go并不支持通用函数,开发者需要创建多个footprint of functions来处理各类型的参数,就像是Golang基於C一样,缺乏对泛型函数的支持会严重限制代码的可重用性,并降低开发过程中的效率。

这也是在某些开发领域设计当中,使用Python等能支持泛型函数的语言会更优於Go

When Should We Use Golang?

  1. Web Backend Services: 在後端服务领域,由於Golang的学习曲线较低,并且开发效率相对较快,因此能让我们迅速地去拓展後端服务。
  2. High Flow Services: 由於Golang有着Goroutine,能够让我们的後端服务更有效地去承载高流量高并发的情境。同时Golang还为DockerTerraformKubernetes等资源密集型服务提供支持。

Summary

Golang或许不是一门最优秀的程序语言,但它在Google的扶持下,必定能在Backend以及DevOps领地有着属於它的一席之地,也因此在未来的篇章当中将会围绕着Golang基本语言特性以及Golang於Web Backend的开发进行解说。

对此,我们这三十天会将教学分为三大部分:

  • GO 基本语法与应用 —> 约莫15天
  • GIN金 後端服务设计与开发 —> 约莫10天
  • GO其他好用套件 —> 约莫5天

希望透过这三十天的学习能让笔者与读者对GO能够有更深入的了解!!


<<:  你的一生,还剩几个十年?

>>:  数值系统与补数

GitHub Action YAML - 语意解析与指令说明

GitHub Action 的 workflow 是以 YAML 档案进行设定 (副档名为 .yml...

DAY28 欸你Git来一下

自从国高中我的房间出现了电脑,虽然是很废的文书机,但它还是在夜深人静的凌晨抚慰我睡不着的心情。方形的...

从 DevOps 兽进化成 DevSecOps 兽:Kube-bench 跟 Falco 浅谈

最近浏览了一下其他先进的文章,发现大家都很有梗耶,今天标题来致敬一下这位大大:Docker兽 究极进...

D6: [漫画]工程师太师了-第3.5话

工程师太师了: 第3.5话 杂记: 因为主角是被我非自愿离职的, 所以今天的科普内容是非自愿离职。 ...

第57天~

这个得上一篇:https://ithelp.ithome.com.tw/articles/10261...