2018你絕對不能錯過的程序語言——GO語言

2018你絕對不能錯過的程序語言——GO語言

簡述

Go語言是谷歌2009發佈的第二款開源編程語言。Go語言專門針對多處理器系統應用程序的編程進行了優化,使用Go編譯的程序可以媲美C或C++代碼的速度,而且更加安全、支持並行進程。

Go的目標是希望提升現有編程語言對程序庫等依賴性(dependency)的管理,這些軟件元素會被應用程序反覆調用。由於存在並行編程模式,因此這一語言也被設計用來解決多處理器的任務。

2018你絕對不能錯過的程序語言——GO語言

Go 開發工具概覽

GO這個工具,別看名字短小,其實非常強大,是一個強大的開發工具,讓我們打開終端,看看這個工具有哪些能力。

2018你絕對不能錯過的程序語言——GO語言

可以發現,go支持的子命令很多,同時還支持查看一些【主題】。我們可以使用go help [command]或者go help [topic]查看一些命令的使用幫助,或者關於某個主題的信息。大部分go的命令,都是接受一個全路徑的包名作為參數,比如我們經常用的go build。

2018你絕對不能錯過的程序語言——GO語言

示例程序

我們通過一個簡單的示例程序看看GO的編碼風格:

2018你絕對不能錯過的程序語言——GO語言

如何運行上述代碼呢?GO語言是編譯型語言,GO的工具鏈將程序的源文件轉變成機器相關的原生指令(二進制),最基礎的工具是run命令,它可以將一個或者多個GO源文件(以.go為後綴)進行編譯、鏈接,鏈接後就開始運行生成的可執行文件:

2018你絕對不能錯過的程序語言——GO語言

上面的編譯、鏈接、運行,都是一次性工作,也就是說下次運行go run命令時,內部流程會全部重做。我們可以通過go build命令生成二進制程序,隨後就可以任意調用了,如下所示:

2018你絕對不能錯過的程序語言——GO語言

如果編譯型語言編寫的程序需要被機器認識,它需要經過編譯和鏈接兩個步驟,編譯是把源代碼編譯成機器碼,鏈接是把各個模塊的機器碼和依賴庫串聯起來生成可執行文件。

2018你絕對不能錯過的程序語言——GO語言

解決的問題

開發中經常會遇到如下問題:

  1. 侵入式通過 implements 把實現類與具體接口綁定起來了,因此有了強耦合;

  2. 如果我修改了接口,比如改了接口方法,則實現類必須改動;

  3. 如果我希望實現類再實現一個接口,實現類也必須進行改動;

  4. 後續跟進者,必須瞭解相關的接口。

而 Go 非侵入式的方式完美解決了這幾個問題。

  • Go 非侵入式代碼

2018你絕對不能錯過的程序語言——GO語言

他只要實現了與接口定義相同的方法,就算實現了某個接口,最重要的,隨著代碼的增加,你的類結構不會像 Java 那樣發生爆炸。因為你根本不用關心你實現了什麼接口,你只需要關心你的類有什麼方法,方法有什麼功能。在實現類的時候也不需要像 Java、PHP 一樣引入各種接口,有可能你定義類的時候,某個接口還不存在,接下來我單獨說說該方式的意義。

2018你絕對不能錯過的程序語言——GO語言

總結

  • Go語言是現代的、快速的,帶有一個強大的標準庫。

  • Go語言內置對併發的支持。

  • Go語言使用接口作為代碼複用的基礎模塊。

2018你絕對不能錯過的程序語言——GO語言

相比之下,Go 的確很簡單,不像C++ 或 Haskell那樣複雜,另一方面,比較 Go 和其他常見語言(如Java、Javascript、Python等)的複雜性時,情況就不太清楚了。


分享到:


相關文章: