GoLang——Hello World,打開新世界的大門

本文始發於個人公眾號:TechFlow,原創不易,求個關注

今天是Go語言系列的第一篇文章,我們來聊聊這門新的語言和它的基礎語法。

淺談Golang

作為程序員而言,往往對於學習新的語言都是有抗拒的。如果你用慣了Java,那麼你可能不太願意去學Python,如果你剛學C或者C++可能你也會看不上Java。因為這個原因還會引發很多口水仗,這很正常。我當時寫C++的時候也看不上Java,寫了Java又不想學Python,現在學會了Python,有時候也會不想看其他語言寫的代碼。

但是隨着我們的成長和實力的提升,我逐漸發現學習一門語言的成本在飛快地下降。畢竟天下語言都是程序,就好像武俠小說里各門各派的武功眼花繚亂,但是歸結起來無非是拳腳功夫、刀劍或者是內功這麼幾種。語言也是一樣,雖然我會的語言也不夠多,遠遠沒達到可以指點江山的地步。但也發現了很多語言之間的相關性實在是很強,有些理念一脈相承,有些更像是一個模子里刻出來的。既然如此,我們為什麼需要學習Go這樣一門語言呢?

網上相關的信息很多,很多大牛架構師高談闊論。很多觀點和看法我並沒有很深的體會,所以我就不做搬運工了。簡單說下我個人的一點淺薄的看法

當初學習Golang這門語言的原因很簡單,純粹是因為工作需要。當前的公司幾乎所有的系統都是以Golang寫的,所以學習Golang是必須的。但是學會語言基本的使用和精通一門語言這是兩回事,學會基本的用法是因為工作需要,而讓我想要花時間把這門語言精通是因為一門課程。這門課程非常著名,它是MIT(麻省理工)的分佈式系統的公開課,當中的內容和課後作業都非常硬核,更關鍵的是課後作業是用Golang寫的。

在學習這門課程的過程當中,經過了一些思考和一些觀察,Golang的確在分佈式處理的場景和問題當中有一定的優勢,許多優秀的解決方案都是基於Golang寫的。並且這兩年各類語言的流行變遷情況也印證了這一點,在最新的全世界程序員最想要學習的語言當中,Golang排名前3。在全球語言流行排行當中,Golang也衝進了前十,要知道這門語言才誕生十年。

並且在國內Golang工程師的需求量也與日俱增,我純屬好奇去拉勾網看了一下,全國Golang的崗位是341個。

看起來似乎不多,但是我們再來看下就業大戶Java,也才500+

要知道,Java幾乎是CS必學的語言,所有CS畢業以及相關專業畢業的學生都可以號稱自己會Java。但是Go不一樣,它太新了,誕生不過十年,以目前高校的反應速度以及篩選課程的能力,它入選中國的教材目測最少還需要5-10年。並且和Java相比,Golang要好學的多。所以如果你還沒有畢業,想要成為一名工程師,想要找一份工作,那可以考慮學習一下Go,說不定競爭壓力會比Java小得多

我個人覺得Golang是一門非常有個性的語言,長處與短處都非常的明顯。關於它的長處很多,相比於一一列舉出來,在實際學習和運用的過程當中領會到的感受會深得多。

Hello World

學語言第一件事就是敲Hello World,我想所有語言都不例外,我們也來看下Golang的Hello World,來看下它的基本結構。

package main

import (
 "fmt"
)

func main() {
 fmt.Println("Hello World")
}

我們來簡單看下這段代碼,可以把這段代碼分成三個部分。

最上面的是模塊名,也可以說成是包名,然後是引入包的語句。這一塊其實沒什麼好說的,很多語言都是這樣的結果,比如Java和Python。在Golang當中main package表示一個獨立的程序,而不是一個包。在main package下的main函數代表這個獨立程序的執行入口,和C++以及Java當中的main函數比較類似。我們可以在main函數里調用其他包的各種函數。

fmt是Golang當中的標準輸出包,我們調用它來輸出我們想打印的東西。

寫完了Hello World之後就要執行了,Golang提供了兩種執行方式,一種是直接go run + 要執行的文件名。還有一種是和C++一樣先進行編譯,再通過./調用編譯之後的二進制包。

當然執行之前我們需要在電腦上配置Golang的環境,這方面網上的資料很多,並且Golang的安裝也比較簡單,基本上沒有什麼坑,所以照着網上的博客安裝就好了

我們來分別看下這兩種調用方式,第一種我們直接使用go run執行代碼:

還有一種方式是我們先通過go build對Golang的代碼先進行編譯,會生成一個二進制文件,之後我們直接./運行這個文件。

所以從這裡我們可以看出來,Golang是編譯型語言而不是解釋性語言,因此它的效率會非常高,實際上由於Golang的一些底層設計和特性,Golang的運行效率非常高,在絕大多數場景比Java更快,僅僅次於C++。

IDE

最後簡單聊聊Golang的開發環境,其實現在開發環境已經普世化了,很多代碼編輯器可以用來寫各種語言。比如業內比較流行的vscode,Atom,Sublime等等,這幾種當中我個人最喜歡vscode,功能非常強大,擁有海量的插件支持,並且頁面風格和使用體驗也不錯,並且還是免費的。

另外一個比較常用的是Goland,它是Jet Brains公司專門為Golang開發的IDE。Jet Brains公司專門發開各種語言的IDE,幾乎每一種語言的IDE都廣受歡迎。寫過Java的同學應該對IDEA都不陌生,它的體驗比eclipse要好用得多。同樣,Goland對於Golang的支持也非常好,使用體驗非常棒,而且如果之前用過它家的其他產品會非常適應。

Goland頁面風格以及各方面體驗都非常棒,但缺點也很明顯,一個是基本上只支持Golang,另一個缺點就是。免費的社區版要閹割掉一些功能,而專業版則要好幾千人民幣。不過如果是學生的話可以免費申請,不得不說還是非常人性化。

除了這些之外,還有七牛團隊開源的liteide,基於C++ QT開發,因此執行效率很高,但據說調試功能不太好用。我也沒有用過,感興趣的小夥伴可以試試。

今天的文章就是這些,如果覺得有所收穫,請順手點個在看或者轉發吧,你們的舉手之勞對我來說很重要。