為什么要學(xué)習(xí)Go語言
Go語言簡介
Go語言(或 Golang)是Google開發(fā)的開源編程語言,誕生于2007年,并于2009年11月開源,2012年發(fā)布Go穩(wěn)定版。Go語言在多核并發(fā)上擁有原生的設(shè)計優(yōu)勢,Go語言從底層原生支持并發(fā),無須第三方庫、開發(fā)者的編程技巧和開發(fā)經(jīng)驗。
Go語言是編程語言設(shè)計的又一次嘗試,它的主要目標(biāo)是兼具Python 等動態(tài)語言的開發(fā)速度和C/C++等編譯型語言的性能與安全性,對類C語言的重大改進(jìn),它不但能讓你訪問底層操作系統(tǒng),還提供了強大的網(wǎng)絡(luò)編程和并發(fā)編程支持。Go語言的用途眾多,可以進(jìn)行網(wǎng)絡(luò)編程、系統(tǒng)編程、并發(fā)編程、分布式編程。
Go語言的推出,旨在不損失應(yīng)用程序性能的情況下降低代碼的復(fù)雜性,具有“部署簡單、并發(fā)性好、語言設(shè)計良好、執(zhí)行性能好”等優(yōu)勢,目前國內(nèi)諸多 IT 公司均已采用Go語言開發(fā)項目。
并發(fā)編程
經(jīng)過 Go 語言重構(gòu)的系統(tǒng)能使用更少的硬件資源獲得更高的并發(fā)和I/O吞吐表現(xiàn)。充分挖掘硬件設(shè)備的潛力也滿足當(dāng)前精細(xì)化運營的市場大環(huán)境。
Go語言的并發(fā)是基于 Goroutine 的,Goroutine 類似于線程,但并非線程。可以將 Goroutine 理解為一種虛擬線程。Go 語言運行時會參與調(diào)度 Goroutine,并將 Goroutine 合理地分配到每個 CPU 中,最大限度地使用CPU性能。開啟一個Goroutine的消耗非常小(大約2KB的內(nèi)存),你可以輕松創(chuàng)建數(shù)百萬個Goroutine。
Goroutine 的特點
- Goroutine 具有可增長的分段堆棧, 這意味著它們只在需要時才會使用更多內(nèi)存。
- Goroutine 的啟動時間比線程快。
- Goroutine 原生支持利用channel安全地進(jìn)行通信。
- Goroutine 共享數(shù)據(jù)結(jié)構(gòu)時無需使用互斥鎖。
Go 是編譯型語言
Go 使用編譯器來編譯代碼。編譯器將源代碼編譯成二進(jìn)制(或字節(jié)碼)格式;在編譯代碼時,編譯器檢查錯誤、優(yōu)化性能并輸出可在不同平臺上運行的二進(jìn)制文件。要創(chuàng)建并運行 Go 程序,程序員必須執(zhí)行如下步驟。
- 使用文本編輯器創(chuàng)建 Go 程序;
- 保存文件;
- 編譯程序;
- 運行編譯得到的可執(zhí)行文件。
這不同于 Python、Ruby 和 JavaScript 等語言,它們不包含編譯步驟。Go 自帶了編譯器,因此無須單獨安裝編譯器
為什么要學(xué)習(xí)Go語言
如果你要創(chuàng)建系統(tǒng)程序,或者基于網(wǎng)絡(luò)的程序,Go語言是很不錯的選擇。作為一種相對較新的語言,它是由經(jīng)驗豐富且受人尊敬的計算機科學(xué)家設(shè)計的,旨在應(yīng)對創(chuàng)建大型并發(fā)網(wǎng)絡(luò)程序面臨的挑戰(zhàn)。
在Go語言出現(xiàn)之前,開發(fā)者們總是面臨非常艱難的抉擇,究竟是使用執(zhí)行速度快但是編譯速度并不理想的語言(如:C++),還是使用編譯速度較快但執(zhí)行效率不佳的語言(如:.NET、Java),或者說開發(fā)難度較低但執(zhí)行速度一般的動態(tài)語言呢?顯然,Go語言在這 3 個條件之間做到了最佳的平衡:快速編譯,高效執(zhí)行,易于開發(fā)。
Go語言支持交叉編譯,比如說你可以在運行 Linux 系統(tǒng)的計算機上開發(fā)可以在 Windows 上運行的應(yīng)用程序。這是第一門完全支持 UTF-8
的編程語言,這不僅體現(xiàn)在它可以處理使用 UTF-8 編碼的字符串,就連它的源碼文件格式都是使用的 UTF-8
編碼。Go語言做到了真正的國際化!