golang是非常年輕的一門語言,主要目標是兼具Python等動態語言的開發速度和C/C 等編譯型語言的效能與安全性。 Go語言作為伺服器程式語言,很適合處理日誌、資料打包、虛擬機器處理、檔案系統、分散式系統、資料庫代理程式等,Go語言廣泛應用於Web 應用、API應用、下載應用程式等,除此之外, Go語言也適用於記憶體資料庫和雲端平台領域,目前國外許多雲端平台都是採用Go開發。
本教學操作環境:windows10系統、golang1.20.1版本、DELL G3電腦。
golang是什麼?
Go語言簡介
Go語言(或 Golang)起源於 2007 年,並在 2009 年正式對外發布。 Go 是非常年輕的語言,它的主要目標是「兼具 Python 等動態語言的開發速度與C/C 等編譯型語言的效能與安全性」。
Go語言是程式語言設計的又一次嘗試,是對類C語言的重大改進,它不但能讓你存取底層作業系統,也提供了強大的網路程式設計和並發程式支援。Go語言的用途眾多,可以進行網路程式設計、系統程式設計、並發程式設計、分散式程式設計。
Go語言的推出,旨在不損失應用程式效能的情況下降低程式碼的複雜性,具有「部署簡單、並發性好、語言設計良好、執行效能好」等優勢,目前國內諸多IT 本公司均已採用Go語言開發專案。
Go語言有時被描述為“C 類似語言”,或“21 世紀的C語言”。 Go 從C語言繼承了相似的表達式語法、控制流結構、基礎資料型別、呼叫參數傳值、指標等很多思想,還有C語言一直所看中的編譯後機器碼的運作效率以及和現有操作系統的無縫適配。
因為Go語言沒有類別和繼承的概念,所以它和 Java 或 C 看起來並不相同。但是它透過介面(interface)的概念來實現多態性。 Go語言有一個清晰易懂的輕量級類型系統,在類型之間也沒有層級之說。因此可以說Go語言是一門混合型的語言。
此外,許多重要的開源專案都是使用Go語言開發的,其中包括 Docker、Go-Ethereum、Thrraform 和 Kubernetes。
我們為什麼選擇Go語言
選擇Go語言的原因可能會有很多,關於Go語言的特性、優勢等,我們在先前的文件中也已經介紹了很多了。但最主要的原因,應該是基於以下兩方面的考量:
執行效能
畢竟是類別C的執行速度,對於某些服務來說,效能是極為重要的一環,事關系統的吞吐、存取的延遲,進而影響使用者的體驗,Go語言透過協程可以方便的實現並行處理,達到處理效率的最大化 ,提升系統的吞吐能力。
開發效率
GO語言使用起來簡單、程式碼描述效率高、編碼規範統一、上手快。 透過少量的程式碼,即可實現框架的標準化,能快速的建置各種通用元件和公共類別庫,進一步提升開發效率,實現特定場景下的功能量產。
Go語言能做什麼
Go 語言從發布 1.0 版本以來備受眾多開發者關注並廣泛使用,Go 語言的簡單、高效、並發特性吸引了許多傳統語言開發者的加入,而且人數越來越多。
鑑於Go語言的特色和設計的初衷,Go語言作為伺服器程式語言,很適合處理日誌、資料打包、虛擬機器處理、檔案系統、分散式系統、資料庫代理程式等;網路程式設計方面, Go語言廣泛應用於Web 應用、API應用、下載應用程式等;除此之外,Go語言也適用於記憶體資料庫和雲端平台領域,目前國外許多雲端平台都是採用Go開發。
伺服器編程,以前你如果使用C或C 做的那些事情,用Go來做很合適,例如處理日誌、資料打包、虛擬機器處理、檔案系統等。
分散式系統、資料庫代理程式、中介軟體等,例如Etcd。
網路編程,這一塊目前應用最廣,包括Web應用、API應用、下載應用,而且Go內建的net/http套件基本上把我們平常用到的網路功能都實現了。
資料庫操作
開發雲端平台,目前國外很多雲端平台在採用Go開發
#國內外有哪些企業或專案使用Go語言
#Go發布之後,許多公司特別是雲端運算公司開始用Go重構他們的基礎架構,很多都是直接採用Go進行了開發,最近熱火朝天的Docker就是採用Go開發的。 【相關推薦:Go影片教學】
使用 Go 語言開發的開源專案非常多。早期的Go 語言開源專案只是透過Go 語言與傳統專案進行C語言庫綁定實現,例如Qt、Sqlite 等;
後期的許多專案都使用Go 語言進行重新原生實現,這個過程相對於其他語言要簡單一些,這也促成了大量使用Go 語言原生開發專案的出現。
例如阿里中間件、聚美優品、高升控股、探探、鬥魚直播、人人車、亞信、Udesk、方付通、招財貓、三一集團、美餐網等。一般的選擇,都是選擇用於自己公司合適的產品系統來做,例如訊息推送的、監控的、容器的等,Golang特別適合做網路並發的服務,這是他的強項,所以也是被優先用於這些項目。 Go語言作為一門大型專案開發語言,在許多大公司相繼使用,甚至完全轉向Go開發。
寫在最後
當然,一個技術能不能發展起來,關鍵還要看三點。 (以下觀點引自https://www.cnblogs.com/qwangxiao/p/8318894.html)
• 有沒有一個比較好的社群。像是 C、C 、Java、Python 和 JavaScript 的生態圈都是非常豐富、火辣的。尤其是有很多商業機構參與的社群那就更為人氣爆棚了,像是 Linux 的社群。
• 有沒有一個工業化的標準。像 C、C 、Java 都是有標準化組織的。尤其是 Java,其在架構上也搞出了像 J2EE 這樣的企業級標準。
• 有沒有一個或多個殺手級應用程式。 C、C 和 Java 的殺手級應用不用多說了,就算是對 PHP 這樣還不能算是好的程式語言來說,因為是 Linux 時代的第一個殺手級解決方案 LAMP 中的關鍵技術,所以,也發展起來了。 上述的這三點是非常關鍵的,新的技術只需要占到其中一到兩點就已經很不錯了,何況有的技術,比如Java,是三點全佔到了,所以,Java 的發展是如此好。
當然,除了上面這三點重要的,還有一些其它的影響因素,例如:
學習曲線是否低,上手是否快。這點非常重要,C 在這點上越做越不好了。
有沒有一個不錯的提高開發效率的開發框架。如:Java 的 Spring 框架,C 的 STL 等。
是否有一個或多個巨型的科技公司作為後盾。如:Java 和 Linux 後面的 IBM、Sun…
有沒有解決軟體開發中的痛點。如:Java 解決了 C 和 C 的記憶體管理問題。
用這些標尺來量一下Go 語言,我們可以清楚地看到:
Go 語言容易上手;
Go 語言解決了並發程式設計和寫入底層應用開發效率的痛點;
Go 語言有Google 這個世界一流的科技公司在後面;
Go 語言的殺手級應用是Docker,而Docker 的生態圈在這幾年完全爆棚了。
所以,Go 語言的未來是不可限量的。當然,Go 可能會吞食很多 C、C 、Java 的專案。不過,Go 語言所吞食主要的項目應該是中間層的項目,既不是非常底層也不會是業務層。也就是說,Go 語言不會吞食底層到 C 和 C 那個等級的,也不會吞食到高層如 Java 業務層的專案。 Go 語言能吞食的一定是 PaaS 上的項目,例如一些訊息快取中間件、服務發現、服務代理、控制系統、Agent、日誌收集等等,沒有複雜的業 務場景,也到不了特別底層(如作業系統)的中間平台層的軟體專案或工具。而 C 和 C 會被打到更底層,Java 會被打到更上層的業務層。
好了,我們再用上面的標尺來量一下 Go 語言的殺手級應用 Docker,你會發現基本上是一樣的。
Docker 上手很容易。
Docker 解決了維運中的環境問題以及服務排程的痛點。
Docker 的生態圈中有大公司在後面助力。如 Google。
Docker 產出了工業界標準 OCI。
Docker 的社群和生態圈已經出現像 Java 和 Linux 那樣的態勢。
以上是golang是做什麼的的詳細內容。更多資訊請關注PHP中文網其他相關文章!