文件
Go 程式語言是一個開源專案,旨在提高程式設計師的工作效率。
Go 語言表達力強,簡潔、清晰且高效。其併發機制使得編寫能夠充分利用多核和網路機器的程式變得容易,而其新穎的型別系統則實現了靈活且模組化的程式構建。Go 可以快速編譯成機器程式碼,同時兼具垃圾回收的便利性和執行時反射的強大功能。它是一種快速、靜態型別、編譯型語言,卻給人以動態型別、解釋型語言的感覺。
入門
安裝 Go
下載和安裝 Go 的說明。
教程:入門
一個簡短的“Hello, World”教程,幫助你入門。瞭解一些關於 Go 程式碼、工具、包和模組的知識。
教程:建立模組
一個涵蓋函式、錯誤處理、陣列、對映、單元測試和編譯的簡短主題教程。
教程:多模組工作區入門
介紹在 Go 中建立和使用多模組工作區的基礎知識。多模組工作區對於跨多個模組進行更改很有用。
教程:使用 Go 和 Gin 開發 RESTful API
介紹使用 Go 和 Gin Web 框架編寫 RESTful Web 服務 API 的基礎知識。
教程:泛型入門
使用泛型,你可以宣告和使用那些旨在與呼叫程式碼提供的一組型別中的任何一種型別配合使用的函式或型別。
教程:模糊測試入門
模糊測試可以為你的測試生成輸入,從而捕捉你可能遺漏的邊緣情況和安全問題。
編寫 Web 應用程式
構建一個簡單的 Web 應用程式。
如何編寫 Go 程式碼
本文件解釋瞭如何在一個模組中開發一組簡單的 Go 包,並展示瞭如何使用 go
命令來構建和測試包。
Go 語言之旅
分為四個部分的 Go 互動式介紹。第一部分涵蓋基本語法和資料結構;第二部分討論方法和介面;第三部分是關於泛型;第四部分介紹 Go 的併發原語。每個部分都以一些練習結束,以便你可以練習所學內容。你可以線上學習或使用以下命令在本地安裝:
$ go install golang.org/x/website/tour@latest
這將把 tour
可執行檔案放在你的 GOPATH 的 bin
目錄中。
使用和理解 Go
高效 Go 程式設計
一份提供編寫清晰、地道 Go 程式碼技巧的文件。對於任何新的 Go 程式設計師來說,這是必讀內容。它補充了教程和語言規範,這兩者都應首先閱讀。
常見問題 (FAQ)
Go 常見問題的解答。
編輯器外掛和 IDE
一份總結常用編輯器外掛和支援 Go 的 IDE 的文件。
Diagnostics
總結了診斷 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 INSERT
、UPDATE
和 DELETE
,你使用 Exec
方法。
查詢資料
對於從查詢返回資料的 SELECT
語句,使用 Query
或 QueryRow
方法。
使用預處理語句
定義一個預處理語句以重複使用可以幫助你的程式碼執行得更快一些,因為它避免了每次程式碼執行資料庫操作時重新建立語句的開銷。
執行事務
sql.Tx
匯出了表示事務特定語義的方法,包括 Commit
和 Rollback
,以及你用於執行常見資料庫操作的方法。
取消進行中的資料庫操作
使用 context.Context,你可以讓你的應用程式函式呼叫和服務在不再需要處理時提前停止工作並返回錯誤。
管理連線
對於一些高階程式,你可能需要調整連線池引數或顯式地使用連線。
避免 SQL 注入風險
你可以透過將 SQL 引數值作為 sql
包函式引數提供來避免 SQL 注入風險
開發模組
開發和釋出模組
你可以將相關的包收集到模組中,然後釋出這些模組供其他開發人員使用。本主題概述了模組的開發和釋出。
模組釋出和版本控制工作流
當你為其他開發人員開發模組時,可以遵循一個工作流,該工作流有助於確保使用該模組的開發人員獲得可靠、一致的體驗。本主題描述了該工作流中的高階步驟。
管理模組源
當你正在開發要釋出供他人使用的模組時,你可以遵循本主題中描述的儲存庫約定,從而確保你的模組更易於其他開發人員使用。
組織 Go 模組
在典型的 Go 專案中,組織檔案和目錄的正確方法是什麼?本主題根據你擁有的模組型別討論了一些常見的佈局。
開發主要版本更新
主要版本更新可能會對模組使用者造成很大的干擾,因為它包含破壞性更改並代表一個新模組。在本主題中瞭解更多資訊。
釋出模組
當你想讓其他開發人員可以使用模組時,你需要釋出它,以便 Go 工具可以訪問它。一旦你釋出了模組,匯入其包的開發人員將能夠透過執行 go get
等命令來解析對該模組的依賴。
模組版本號
模組的開發人員使用模組版本號的每個部分來表明該版本的穩定性和向後相容性。對於每個新版本,模組的釋出版本號專門反映了自前一個版本以來模組更改的性質。
演講
Go 影片教程
使 Go 快速、有趣和高效的三個要素:介面、反射和併發。構建一個玩具網路爬蟲來演示這些功能。
優雅成長的程式碼
Go 的一個關鍵設計目標是程式碼適應性;它應該能夠輕鬆地採用一個簡單的設計,並以乾淨、自然的方式在此基礎上進行構建。在本次演講中,Andrew Gerrand 描述了一個簡單的“聊天輪盤”伺服器,它匹配成對的傳入 TCP 連線,然後使用 Go 的併發機制、介面和標準庫來擴充套件它,使其具有 Web 介面和其他功能。儘管程式的功能發生了顯著變化,但 Go 的靈活性在程式成長過程中保留了原始設計。
Go 併發模式
併發是設計高效能網路服務的關鍵。Go 的併發原語(goroutine 和通道)提供了一種簡單有效的方式來表達併發執行。在本次演講中,我們將看到如何用簡單的 Go 程式碼優雅地解決棘手的併發問題。
高階 Go 併發模式
本次演講在《Go 併發模式》演講的基礎上,深入探討了 Go 的併發原語。
更多
程式碼漫遊
Go 程式的引導式教程。
語言
- JSON-RPC:一個關於介面的故事
- Go 的宣告語法
- Defer、Panic 和 Recover
- Go 併發模式:超時,繼續
- Go 切片:用法和內部原理
- 一個 GIF 解碼器:Go 介面練習
- 錯誤處理和 Go
軟體包
- JSON 和 Go - 使用 json 包。
- 大量資料 - gob 包的設計和使用。
- 反射定律 - reflect 包的基礎知識。
- Go image 包 - image 包的基礎知識。
- Go image/draw 包 - image/draw 包的基礎知識。
模組
- 使用 Go 模組 - 在簡單專案中引入模組的使用。
- 遷移到 Go 模組 - 將現有專案轉換為使用模組。
- 釋出 Go 模組 - 如何將新版本的模組提供給其他人。
- Go 模組:v2 及更高版本 - 建立和釋出主要版本 2 及更高版本。
- 保持模組相容 - 如何保持模組與之前的次要/補丁版本相容。
工具
- 關於 Go 命令 - 我們為什麼編寫它,它是什麼,它不是什麼,以及如何使用它。
- Go Doc 註釋 - 編寫良好的程式文件
- 使用 GDB 除錯 Go 程式碼
- 資料競爭檢測器 - 資料競爭檢測器手冊。
- Go 彙編器快速指南 - Go 使用的彙編器介紹。
- C? Go? Cgo! - 使用 cgo 連結 C 程式碼。
- Go 程式效能分析 - 測量程式碼 CPU 和記憶體使用情況的工具
- Go 競爭檢測器介紹 - 競爭檢測器介紹。
- Gopls:Go 語言伺服器 - 在使用 Go 時充分利用你的編輯器。
維基
由 Go 社群維護的 Go Wiki 包含有關 Go 語言、工具和其他資源的文章。