Go語言學習(1) - 簡介

翻身碼農把歌唱發表於2018-11-11

Go語言的三個作者是:Robert Giresemer,Rob Pike 和 Ken Thompson

  • Robert 在開發Go之前是Google V8、Chubby和HotSpot JVM的主要貢獻者;
  • Rob主要是Unix、UTF-8、plan 9的作者;
  • Ken主要是B語言、C語言的作者、Unix之父。

Go語言的主要發展過程

  1. 2007年9月,Rob Pike正式命名為Go
  2. 2008年5月,Google全力支援該專案;
  3. 2009年11月,Go將程式碼全部開源,它獲得了當年的年度語言;
  4. 2012年3月28日,Go釋出第一個正式的穩定版

Go語言的特點

1.設計Go語言是為了解決當時Google開發者遇到的問題

  • 大量的 C++程式碼,同時又引入了Java和Python
  • 成千上萬行的程式碼
  • 分散式的編譯系統
  • 數百萬的伺服器

2.Google開發中的痛點:

  • 編譯慢
  • 失控的依賴
  • 每個工程師只是用了一個語言裡面的一部分
  • 程式難以維護
  • 交叉編譯困難

3.如何解決當時的問題和痛點

  • Go希望成為網際網路時代的C語言,因此,Go語言也是足夠簡單
  • 設計Go語言的目標是為了消除各種緩慢和笨重、改進各種低效和擴充套件性

4.Go語言的特點

  • 沒有繼承多型的物件導向
  • 強一致性型別
  • interface不需要顯示宣告
  • 沒有異常處理
  • 基於首字母的可訪問特性
  • 不用的import或者變數引起編譯錯誤
  • 完美而卓越的標準庫包

Go語言的優勢

1.學習曲線容易

Go語言的語法簡單,包含了類C語法。所以Go語言容易學習

2.快速的編譯時間、開發效率和執行效率高

Go語言擁有接近C的執行效率和接近PHP的開發效率

3.出身名門、血統純正

Go語言出自Google公司,Google對這個新的寵兒還是很看重的

4.自由高效:組合的思想、無侵入式的介面

Go語言可以說是開發效率和執行效率的完美結合。天生的併發程式設計支援,Go語言支援所有的程式設計正規化,包含程式式程式設計、物件導向程式設計、面向介面程式設計、函數語言程式設計

5.強大的標準庫

包括網際網路應用、系統程式設計和網路程式設計,它裡面的標準庫基本上非常穩定了

6.部署方便:二進位制檔案、拷貝部署

7.簡單的併發

Go是一種非常高效的語言,高度支援併發性。Go是為大資料、微服務、併發而生的一種程式語言。

Go作為一門語言致力於使事情簡單化,他並未引入很多新概念,而是聚焦於打造一門簡單的語言,他使用起來異常快速和簡單,其唯一的創新之處是goroutine和通道。Goroutines是Go面向執行緒的輕量級方法,而通道是goroutines之間通訊的優先方式。

建立Goroutines的成本很低,只需要幾千個位元組的額外記憶體,正因為如此,才使得同時執行數百個甚至數千個goroutines成為可能。可以藉助通道實現Gotoutines之間的通訊。Gotoutines以及基於通道的併發性方法使其非常容易使用所有的CPU核心,並處理併發的IO。

8.穩定性

Go擁有強大的編譯檢查、嚴格的編碼規範和完整的軟體生命週期工具,具有很強的穩定性。Go提供了軟體生命週期(開發、測試、部署、維護等等)的各個環節的工具,如:go tool、gofmt、go test。

Go語言的核心特性和優勢

Go主要有靜態語言、天生併發、內建GC、安全性高、語法簡單、編譯快速這幾個方面的特性,這些特性決定了Go的三個高富帥特性:執行快、開發快、部署快。

Go語言能開發什麼

  1. 伺服器程式設計,以前用C或者C++做的事情,用Go來做很合適,例如處理日誌、資料打包、虛擬機器處理、檔案系統等。
  2. 分散式系統,資料庫代理器等,例如:Etcd。
  3. 網路程式設計,包括Web應用,API應用,下載應用等
  4. 資料庫操作
  5. 開發雲平臺

歡迎關注我的公眾號~ 搜尋公眾號: 翻身碼農把歌唱 或者 掃描下方二維碼:

img

相關文章