Go語言教程手冊

閱讀(26726) 更新時間(2022-04-13)

Go是一種新的語言,一種並發的、帶垃圾回收的、快速編譯的語言。它可以在一台電腦上用幾秒鐘的時間編譯一個大型的Go程式。 Go為軟體構造提供了一個模型,它使依賴分析更加容易,並且避免了大部分C風格include文件與庫的開頭。 Go是靜態型別的語言,它的型別系統沒有層級。因此使用者不需要在定義類型之間的關係上花費時間,這樣感覺起來比典型的物件導向語言更輕量級。 Go完全是垃圾回收型的語言,並為並發執行與通訊提供了基本的支援。依照其設計,Go打算為多核心機器上系統軟體的構造提供一個方法。


Go(又稱Golang)是Google開發的靜態強型別、編譯型、並髮型,並具有垃圾回收功能的程式語言。

羅伯特‧格瑞史莫(Robert Griesemer),羅伯‧派克(Rob Pike)及肯‧湯普遜(Ken Thompson)於2007年9月開始設計Go,稍後Ian Lance Taylor、 Russ Cox加入計畫。

Go是基於Inferno作業系統所開發的。 Go於2009年11月正式宣布推出,成為開放原始碼項目,並在Linux及Mac OS X平台上進行了實現,後來追加了Windows系統下的實現。在2016年,Go被軟體評估公司TIOBE 選為「TIOBE 2016 年最佳語言」。 

目前,Go每半年發布一個二級版本(即從a.x升級到a.y)。

下面讓我們感受下第一個Go程式吧!

第一個Go程式

實例

package main

import "fmt"

func main() {
   fmt.Println("Hello, World!")
}

執行實例»

#點擊"運行實例" 按鈕查看線上實例

#

Go的語法接近C語言,但對於變數的宣告有所不同。 Go支援垃圾回收功能。 Go的平行模型是以東尼·霍爾的通訊順序進程(CSP)為基礎,採取類似模型的其他語言包括Occam和Limbo,但它也具有Pi運算的特徵,例如通道傳輸。在1.8版本中開放插件(Plugin)的支持,這意味著現在能從Go中動態載入部分函數。

與C 相比,Go不包括如枚舉、異常處理、繼承、泛型、斷言、虛函數等功能,但增加了切片(Slice) 型、並發、管道、垃圾回收、介面(Interface)等特性的語言級支援。 Go 2.0版本將支援泛型,對於斷言的存在,則持負面態度,同時也為自己不提供類型繼承來辯護。

不同於Java,Go內嵌了關聯陣列(也稱為雜湊表(Hashes)或字典(Dictionaries)),就像字串類型一樣。

提示:我們的Go教學將幫助您學習從初級到高級的Go知識。如果你有任何疑問,請前往PHP中文網Go社群提出你的問題,會有熱心網友為你解答。

Go撰寫風格

在Go中有幾項規定,而且這些是強制的,當不符合以下規定時編譯將會產生錯誤。

  • 每行程式結束後不需要寫分號(;)。

  • 大括號({)不能夠換行放置。

  • if判斷式和for迴圈不需要以小括號包覆起來。

Go也有內建gofmt工具,能夠自動整理程式碼多餘的空白、變數名稱對齊、並將對齊空格轉換成Tab。

Go語言特色

  • 簡潔、快速、安全性

  • 並行、有趣、開源

  • 記憶體管理、陣列安全、編譯迅速

Go 語言用途

Go 語言被設計成一門應用於搭載Web 伺服器,儲存叢集或類似用途的巨型中央伺服器的系統程式語言。

對於高效能分散式系統領域而言,Go 語言無疑比大多數其它語言有著更高的開發效率。它提供了海量並行的支持,這對於遊戲服務端的開發而言是再好不過了。

本Go 教學手冊涵蓋的內容

本Go 教學涵蓋所有Go 基礎和進階知識,包含了Go語言結構、Go 基本語法、Go 資料型別、Go 函數、Go 運算符、Go 數組、Go 錯誤處理、Go 資料轉換以及Go 語言開發工具等等知識介紹。

提示:本教學的每一章都包含了許多Go 實例,您可以直接點擊 "執行實例" 按鈕線上查看結果。這些例子將幫助您更好地理解和使用Go 語言。

最新章節


Go 语言开发工具 2016-10-18
Go 错误处理 2016-10-18
Go 语言接口 2016-10-18
Go 语言类型转换 2016-10-18
Go 语言递归函数 2016-10-18
Go 语言Map(集合) 2016-10-18
Go 语言范围(Range) 2016-10-18
Go 语言切片(Slice) 2016-10-18