Golang又簡稱為Go,Golang是一個始於2009年由Google開源的程式語言,由Google的一個團隊與其他外部貢獻者依同開發。Go旨於簡化軟體開發過程,尤其是對於複雜的架構與開發過程。
由Go是基於C語言開發的。並且也繼承了C的規範語法,並在進行了一些更動與功能優化的情況下,允許開發者安全地管理內存。
而Go承諾代碼效率,這也讓他們成為企業將產品微服務化的首選,像是以下的公司都有使用Golang進行優化或者是產品發開:
...etc
Golang是一門編譯程式語言,這意味著他需要先被轉化成程序能讀懂的格式才能進行運行,與
Java類似。也因為Golang精簡且去冗地開發流程,使他已經被證明運行效率優於Java以及Python。詳情請見 Go vs Java 與 Go vs Python
有別於C或是Java,Golang的學習時間與曲線會相對較短,尤其對於有著其他語言開發經驗的開發者,因Golang是基於C開發而成,雖然關鍵字與語法略有不同,但有經驗開發者能在Go身上找到其他語言的影子因而加快熟悉速度。
最大的理由應該是Go有著Goroutine,它是個可以同時獨立運行的process。
一個Goroutines僅佔用2Kb,這也使得它在同時需要運行多個並發的process時可以很容易的擴展。Goroutine與Java的Thread不同,Goroutines 是non-blocking。你也可以當Goroutines當成是一個結合Javascript async approach與Java multi-threading好處的產物。
作為一款開源的程式語言,它有著許多不同編譯器、IDE以及插件的支持,你也可以從Github下載許許多多由Go所開發的專案。
基於 Hired ,Go榮登 #1全球最受歡迎的程式語言,目前也有越來越多的公司開始使用Go,這也表示有更多的開發人員開始學習Golang,因此學習Golang可能會為你的職涯帶來更多的價值。
Golang比起一些dynamic programming language像是Python與Php,還是需要較多的代碼才能完成類似的功能。因為前者嚴格來說還算是一門簡單的編譯語言。
Golang目前只發展了十二年,還是個相當年輕的程式語言。也因此他的SDK亦或者是第三方套件比起其他的程式語言來說少蠻多的。
Go並不支持通用函數,開發者需要創建多個footprint of functions來處理各類型的參數,就像是Golang基於C一樣,缺乏對泛型函數的支持會嚴重限制代碼的可重用性,並降低開發過程中的效率。
這也是在某些開發領域設計當中,使用Python等能支持泛型函數的語言會更優於Go。
Golang或許不是一門最優秀的程式語言,但它在Google的扶持下,必定能在Backend以及DevOps領地有著屬於它的一席之地,也因此在未來的篇章當中將會圍繞著Golang基本語言特性以及Golang於Web Backend的開發進行解說。
對此,我們這三十天會將教學分為三大部分:
希望透過這三十天的學習能讓筆者與讀者對GO能夠有更深入的暸解!!