App下載
1. Go語言前景
Go 語言入門課程 / 1. Go語言前景
手機也能上課
App下載
1/8

為什么要學(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í)行如下步驟。

  1. 使用文本編輯器創(chuàng)建 Go 程序;
  2. 保存文件;
  3. 編譯程序;
  4. 運行編譯得到的可執(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語言做到了真正的國際化!


+10 經(jīng)驗 +10積分
解析
提示
參考答案
+10 經(jīng)驗 +10積分
視頻播放結(jié)束,是否學(xué)習(xí)下一節(jié)?