文件

Go 程式語言是一個開放原始碼專案,旨在提升程式設計人員的生產力。

Go 具有表達力、簡潔、乾淨且有效率的特點。其並行機制讓撰寫能充分利用多核心和網路電腦的程式變得容易,而其新穎的型別系統則能建構出彈性和模組化的程式。Go 能快速編譯成機器碼,但同時具有垃圾回收的便利性和執行時期反射的強大功能。它是一種快速、靜態型別且編譯的語言,但感覺起來像動態型別且直譯的語言。

入門

安裝 Go

下載和安裝 Go 的說明。

教學課程:入門

簡短的 Hello, World 教學課程,讓您入門。深入了解 Go 程式碼、工具、套件和模組。

教學課程:建立模組

簡短主題的教學課程,介紹函式、錯誤處理、陣列、對應、單元測試和編譯。

教學課程:開始使用多模組工作區

介紹在 Go 中建立和使用多模組工作區的基礎知識。多模組工作區有助於跨多個模組進行變更。

教學課程:使用 Go 和 Gin 開發 RESTful API

介紹使用 Go 和 Gin Web Framework 編寫 RESTful 網路服務 API 的基礎知識。

教學課程:開始使用泛型

使用泛型,您可以宣告和使用函式或類型,這些函式或類型撰寫為可使用呼叫程式碼提供的任何類型集合。

教學課程:開始使用模糊測試

模糊測試可以為您的測試產生輸入,這些輸入可以找出您可能錯過的邊界案例和安全性問題。

撰寫網路應用程式

建立一個簡單的網路應用程式。

如何撰寫 Go 程式碼

這份文件說明如何於模組內開發一組簡單的 Go 套件,並展示如何使用 go 指令 來建立和測試套件。

Go 導覽

分為四個部分的 Go 互動式簡介。第一部分涵蓋基本語法和資料結構;第二部分討論方法和介面;第三部分是關於泛型;第四部分介紹 Go 的並行處理原語。每個部分都以一些練習作結,讓你可以練習所學的內容。你可以線上參加導覽,或使用以下方式在本地端安裝:

	$ go install golang.org/x/website/tour@latest
	

這會將 tour 二進位檔放置在你的 GOPATHbin 目錄中。

使用和了解 Go

有效的 Go

提供撰寫清晰、慣用語法 Go 程式碼提示的文件。任何新的 Go 程式設計師都必讀。它補充了導覽和語言規格,這兩者都應該先閱讀。

常見問題集 (FAQ)

回答有關 Go 的常見問題。

編輯器外掛程式和 IDE

總結支援 Go 的常用編輯器外掛程式和 IDE 的文件。

診斷

總結診斷 Go 程式問題的工具和方法。

Go 垃圾收集器指南

描述 Go 如何管理記憶體,以及如何充分利用記憶體的文件。

管理相依性

當你的程式碼使用外部套件時,這些套件(以模組形式散布)就會變成相依性。

模糊測試

Go 模糊測試的主要文件頁面。

Go 應用程式的覆蓋率

Go 應用程式覆蓋率測試的主要文件頁面。

剖析引導最佳化

Go 應用程式剖析引導最佳化 (PGO) 的主要文件頁面。

參考

套件文件

Go 標準函式庫的文件。

指令文件

Go 工具的文件。

語言規範

官方 Go 語言規範。

Go 模組參考

Go 依賴管理系統的詳細參考手冊。

go.mod 檔案參考

go.mod 檔案中包含的指令參考。

Go 記憶體模型

一份文件,說明在什麼條件下,一個 goroutine 中的變數讀取可以保證觀察到另一個 goroutine 中對同一個變數的寫入所產生的值。

貢獻指南

對 Go 的貢獻。

發行歷史

Go 發行版本之間變更的摘要。

存取資料庫

教學:存取關聯式資料庫

介紹使用 Go 和標準函式庫中的 database/sql 套件存取關聯式資料庫的基礎知識。

存取關聯式資料庫

Go 資料存取功能的概觀。

開啟資料庫句柄

使用 Go 資料庫句柄來執行資料庫操作。使用資料庫連線屬性開啟句柄後,句柄會代表一個連線池,並由它代表你進行管理。

執行不傳回資料的 SQL 陳述式

對於可能會變更資料庫的 SQL 操作,包括 SQL INSERTUPDATEDELETE,請使用 Exec 方法。

查詢資料

對於從查詢傳回資料的 SELECT 陳述式,請使用 QueryQueryRow 方法。

使用已準備好的陳述式

定義一個已準備好的陳述式以重複使用,可以透過避免每次程式碼執行資料庫操作時重新建立陳述式所產生的負擔,來幫助你的程式碼執行得更快。

執行交易

sql.Tx 匯出表示交易特定語意的函式,包括 CommitRollback,以及用於執行常見資料庫操作的函式。

取消進行中的資料庫操作

使用 context.Context,你可以讓應用程式的函式呼叫和服務提早停止運作,並在不再需要其處理時傳回錯誤。

管理連線

對於某些進階程式,您可能需要調整連線池參數或明確使用連線。

避免 SQL 注入風險

您可以透過提供 SQL 參數值作為 sql 套件函式引數,來避免 SQL 注入風險

開發模組

開發和發佈模組

您可以將相關套件收集到模組中,然後發佈這些模組供其他開發人員使用。本主題概述了開發和發佈模組的資訊。

模組發佈和版本控管工作流程

當您開發模組供其他開發人員使用時,您可以遵循一個工作流程,以協助確保使用模組的開發人員擁有可靠且一致的體驗。本主題說明該工作流程中的高階步驟。

管理模組原始碼

當您開發模組以供其他人使用時,您可以遵循本主題中所述的儲存庫慣例,以協助確保您的模組更容易讓其他開發人員使用。

整理 Go 模組

在典型的 Go 專案中整理檔案和目錄的正確方式為何?本主題會根據您的模組類型,探討一些常見的配置。

開發主要版本更新

主要版本更新可能會對模組使用者造成很大的影響,因為它包含重大變更,並代表一個新的模組。在本主題中深入了解。

發佈模組

當您想讓其他開發人員可以使用模組時,請發佈模組,使其對 Go 工具可見。發佈模組後,匯入其套件的開發人員將能夠透過執行指令(例如 go get)來解析模組的相依性。

模組版本編號

模組開發人員使用模組版本號碼的每個部分來表示版本的穩定性和向後相容性。對於每個新版本,模組的發行版本號碼特別反映自前一個版本以來模組變更的性質。

演講

Go 的影片導覽

讓 Go 快速、有趣且富有成效的三件事:介面、反射和並行處理。建構一個玩具網路爬蟲來示範這些功能。

優雅成長的程式碼

Go 的主要設計目標之一是程式碼適應性;它應該可以輕鬆採用簡單的設計,並以乾淨且自然的方式建構在它上面。在這次演講中,Andrew Gerrand 描述了一個簡單的「聊天輪盤」伺服器,它會配對成對的 TCP 連線,然後使用 Go 的並行處理機制、介面和標準函式庫來擴充它,並加入網路介面和其他功能。儘管程式功能發生極大的變化,但 Go 的靈活性在它成長時仍保留了原始設計。

Go 並行處理模式

並行處理是設計高性能網路服務的關鍵。Go 的並行處理原語(goroutine 和 channel)提供表達並行執行的一種簡單且有效的方式。在這次演講中,我們將看到如何使用簡單的 Go 程式碼優雅地解決棘手的並行處理問題。

進階 Go 並行處理模式

這場演講擴充了「Go 並行處理模式」演講,深入探討 Go 的並行處理原語。

更多

請參閱 Go Talks 網站wiki 頁面,以取得更多 Go 演講。

程式碼導覽

Go 程式的導覽。

語言

套件

模組

工具

Wiki

由 Go 社群維護的 Go Wiki,包含有關 Go 語言、工具和其他資源的文章。

請參閱 Wiki 中的 學習 頁面,以取得更多 Go 學習資源。

非英語文件

請參閱 Wiki 中的 非英語 頁面,以取得在地化文件。