最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go基礎教程之環(huán)境搭建及常用命令

 更新時間:2025年03月03日 10:42:17   作者:愛吃牛肉的大老虎  
這篇文章主要介紹了Go基礎教程之環(huán)境搭建及常用命令的相關資料,包括Go語言簡介、環(huán)境配置、包管理工具GoModules以及常用命令的全面介紹,需要的朋友可以參考下

1 Go

1.1 簡介

1.1.1 定義

Go語言,也被稱為Golang,是一種由Google開發(fā)的靜態(tài)類型、編譯型編程語言,是一個開源的編程語言,它能讓構造簡單、可靠且高效的軟件變得容易。
Go是從2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持開發(fā),后來還加入了Ian Lance Taylor, Russ Cox等人,并最終于2009年11月開源,在2012年早些時候發(fā)布了Go 1穩(wěn)定版本。現(xiàn)在Go的開發(fā)已經(jīng)是完全開放的,并且擁有一個活躍的社區(qū)。

官方網(wǎng)站:https://go.dev/

中文網(wǎng)站:https://studygolang.com/

1.1.2 特點用途

Go語言的特點:

  • 編譯型語言:
    Go語言通過編譯生成機器碼,因此具有較高的運行效率,接近C語言的性能。
  • 并發(fā)編程支持:
    Go語言內(nèi)置了輕量級的并發(fā)支持,通過goroutine和channel實現(xiàn)高效的并發(fā)編程。這使得Go語言非常適合開發(fā)高并發(fā)應用,如網(wǎng)絡服務器、分布式系統(tǒng)等。
  • 簡潔的語法:
    Go語言的語法簡潔明了,易于學習和使用,降低了編程的復雜性。
  • 自動垃圾回收:
    Go語言具有自動垃圾回收機制,可以有效避免內(nèi)存泄漏問題,減輕了開發(fā)者對內(nèi)存管理的負擔。
  • 跨平臺支持:
    編譯后的Go程序可以在不同操作系統(tǒng)上運行,如Windows、Linux、macOS等。
  • 標準庫豐富:
    Go語言提供了豐富的標準庫,包含了許多實用的工具和功能,如網(wǎng)絡編程、文件操作、加密等,方便開發(fā)者快速構建軟件系統(tǒng)。
  • 工具鏈完善:
    Go語言擁有一個完善的工具鏈,包括代碼格式化工具(gofmt)、性能分析工具(go tool pprof)、測試工具(go test)等,這些工具有助于提高開發(fā)效率和代碼質(zhì)量。

Go語言的用途:

  • 服務器端開發(fā):
    Go語言非常適合用于開發(fā)高性能的Web服務器和API服務。使用Go語言開發(fā)的Gin和Beego等框架,能夠高效地處理HTTP請求。
  • 云計算:
    Go語言是云計算領域的重要編程語言。許多云服務、云應用程序都是用Go語言開發(fā)的。例如,Google的Kubernetes容器編排系統(tǒng)和Docker容器化平臺都是用Go語言編寫的。
  • 大數(shù)據(jù)處理:
    Go語言在處理大規(guī)模數(shù)據(jù)時表現(xiàn)出色。得益于其高效的并發(fā)支持,Go語言能夠顯著提升數(shù)據(jù)處理性能。
  • 系統(tǒng)編程:
    Go語言也可以用于開發(fā)操作系統(tǒng)、網(wǎng)絡工具等系統(tǒng)軟件。
  • 網(wǎng)絡編程:
    Go語言提供了簡潔而強大的網(wǎng)絡編程庫,使得開發(fā)網(wǎng)絡應用程序變得簡單和高效。
  • 靜態(tài)分析工具:
    Go語言的簡潔性和靈活性使其成為開發(fā)靜態(tài)分析工具的理想選擇。
  • 命令行工具:
    許多高效的命令行工具都是用Go語言編寫的。
  • 物聯(lián)網(wǎng)開發(fā):
    Go語言具有運行效率高、并發(fā)編程支持強等特點,非常適合物聯(lián)網(wǎng)開發(fā)。
  • 區(qū)塊鏈開發(fā):
    Go語言的安全性和高效性使其成為區(qū)塊鏈開發(fā)的首選語言之一。以太坊、Hyperledger Fabric等知名區(qū)塊鏈平臺均使用Go語言作為核心開發(fā)語言。

1.2 環(huán)境配置

1.2.1 下載安裝

訪問國內(nèi)Go語言網(wǎng)站:Go語言中文網(wǎng)

1.2.2 環(huán)境配置

1.2.2.1 添加環(huán)境變量

win+e打開,右擊此電腦,選擇屬性,搜索查看高級系統(tǒng)設置,點擊環(huán)境變量

添加變量:

  • 設置 GOROOT(安裝路徑):
    點擊系統(tǒng)變量下的新建。
    名稱:GOROOT,值:C:\Program Files\Go(Go 的安裝路徑
  • 設置 GOPATH(項目路徑):
    GOPATH 是 Go 項目工作目錄新建一個目錄,例如 D:\GoWorkspace。
    在系統(tǒng)變量中添加:
    名稱:GOPATH,值:D:\GoWorkspace。
  • 添加 PATH
    找到系統(tǒng)變量中的 Path,點擊編輯。
    添加以下路徑:
    %GOROOT%\binGo 的可執(zhí)行文件路徑)。
    %GOPATH%\binGOPATH 的 bin 目錄)。

1.2.2.2 各個環(huán)境變量理解

  • GOROOT 作用
    GOROOT 是 Go 的安裝路徑,用于告訴 Go 工具鏈(如 go build、go run)Go 的核心庫在哪里。
    默認情況下,Go 的安裝程序會自動檢測其安裝路徑并設置好 GOROOT,因此 通常不需要手動添加 GOROOT 環(huán)境變量。
    那么就,是否需要在環(huán)境變量中手動添加?如果GOROOT 是 Go 的默認路徑(如 C:\Program Files\Go),且未修改過安裝路徑,無需手動添加 GOROOT。但是,如果 Go 安裝到了非默認路徑,或者 Go 工具鏈出現(xiàn)了找不到標準庫的問題,那么可以手動設置 GOROOT。
  • GOPATH 作用
    GOPATH 是 Go 項目的工作空間目錄,用于存儲源碼、依賴包和生成的二進制文件。
    它是 Go 1.x 的工作機制(在 Go Modules 之前非常重要),用來組織代碼結構。
    • GOPATH 必要性
      如果使用的是 Go Modules(現(xiàn)代 Go 的推薦方式),GOPATH 的作用大大降低,但仍有以下場景需要:
      • 編譯后的可執(zhí)行文件會存放在 GOPATH/bin 中。
      • 某些工具(如 go install)仍然默認依賴 GOPATH。
      • 在不使用 Go Modules 的老項目中,GOPATH 是必需的。
    • 為什么還要添加 GOPATH/bin 到 PATH當用 go install 安裝工具(如 golangci-lint、dlv)時,生成的可執(zhí)行文件會存放到 GOPATH/bin 下。
      將 GOPATH/bin 添加到 Path 中,方便在全局運行這些工具。
    • 是否需要添加 GOPATH如果項目完全基于 Go Modules,可以不顯式配置 GOPATH如果需要兼容老項目,或安裝工具包,建議配置。
    • 是否需要添加 GOPATH/bin 到 PATH必須添加,否則用 go install 安裝的工具無法直接在命令行中使用。
  • 實際建議
    根據(jù)現(xiàn)代 Go 的實踐,以下是建議的簡化配置:
    • GOROOT:不需要手動設置(如果使用默認安裝路徑)。
    • GOPATH:對于大多數(shù)現(xiàn)代項目(使用 Go Modules),只需設置一個工作目錄(如 D:\GoWorkspace)作為 GOPATH。將 GOPATH/bin 添加到系統(tǒng) PATH,方便全局使用工具。

1.2.3 驗證環(huán)境變量

打開新的命令行窗口,運行以下命令:

go env

確保輸出的 GOROOT 和 GOPATH 正確。

1.3 包管理工具 Go Modules

1.3.1 開啟使用

Go Modules 是 Go 語言推薦的依賴管理方式。
啟用 Go Modules:

go env -w GO111MODULE=on

現(xiàn)在的新版本 Go(1.16 及更高版本)默認已經(jīng)啟用了 Go Modules,因此在一般情況下,不需要手動設置 GO111MODULE

檢查是否成功:

go env | findstr GO111MODULE

初始化項目, 在項目目錄下運行:

go mod init <模塊名稱>

例如,創(chuàng)建一個模塊名稱為 example.com/mymodule 的項目:

go mod init example.com/mymodule

這會生成一個 go.mod 文件,內(nèi)容類似如下:

module example.com/mymodule

go 1.20

運行項目:

go run .

1.3.2 添加依賴包

當在代碼中引入第三方包時(例如 github.com/gin-gonic/gin),Go 會自動解析并下載依賴包。

例如,編寫代碼:

package main

import (
    "github.com/gin-gonic/gin"
)

func main() {
    r := gin.Default()
    r.GET("/", func(c *gin.Context) {
        c.JSON(200, gin.H{"message": "Hello, World!"})
    })
    r.Run()
}

運行:

go mod tidy

這會下載所需的依賴包并更新 go.mod 和 go.sum 文件。
go.mod 記錄了直接依賴,go.sum 記錄了依賴的校驗信息。

1.3.3 配置國內(nèi)包源

由于網(wǎng)絡原因,下載依賴包時可能會很慢,建議更換為國內(nèi)包源。

1.3.3.1 通過 go env 配置

設置 Go Modules 使用國內(nèi)代理:

go env -w GOPROXY=https://goproxy.cn,https://mirrors.aliyun.com,direct

驗證配置:

go env | findstr GOPROXY

輸出類似:

GOPROXY=https://goproxy.cn,https://mirrors.aliyun.com,direct

1.3.3.2 修改環(huán)境變量

如果不想每次都設置,可以直接在系統(tǒng)環(huán)境變量中添加 GOPROXY打開環(huán)境變量設置,添加一個新變量:

  • 名稱:GOPROXY
  • 值:https://goproxy.cn,https://mirrors.aliyun.com,direct

GOPROXY 可以配置多個代理地址,并用逗號(,)分隔。Go 會按照順序依次嘗試這些代理,直到找到一個可用的
這里加 direct 表示如果在指定的代理服務器上找不到模塊,Go 會直接嘗試從模塊源(如 Git 倉庫)下載依賴。這是一種后備機制,確保即使代理不可用,依賴仍有機會通過源下載。

1.3.4 更新和管理依賴

  • 下載和清理依賴:
    go mod tidy:這會添加缺失的依賴,并移除未使用的依賴。
  • 查看依賴包:
    go list -m all
  • 升級依賴:
    go get -u <包名>例如,升級 Gin:
    go get -u github.com/gin-gonic/gin
  • 指定依賴版本:
    編輯 go.mod 文件,直接指定版本:
    require github.com/gin-gonic/gin v1.9.0然后運行:go mod tidy

1.3.5 沒有域名時項目操作

如果沒有域名,又想避免將來遷移麻煩,可以使用以下方式:
本地開發(fā)時使用簡單名稱:

go mod init myproject

以后需要發(fā)布時再修改: 修改 go.mod 文件的 module 字段即可,比如:

module github.com/username/myproject

結合私有模塊代理: 如果項目是私有的,可以使用 GOPRIVATE 指定私有模塊地址:

go env -w GOPRIVATE=company.com

1.3.6 go.mod

1.3.6.1 文件介紹

go.mod 是 Go Modules 的核心文件,用來定義模塊及其依賴項。
一個典型的 go.mod 文件可能包含以下內(nèi)容:

module example.com/mymodule

go 1.20

require (
    github.com/gin-gonic/gin v1.9.0
    golang.org/x/net v0.5.0
)

各部分含義:

  • module: 定義模塊的名稱(通常是項目的根路徑)。模塊名稱決定了這個項目在其他地方引入時的路徑。
  • go: 指定最低支持的 Go 版本。例如,go 1.20 表示此模塊要求 Go 1.20 或更高版本。
  • require: 列出此模塊的直接依賴包及其版本。
  • replace(可選): 用于替換依賴包的路徑或版本,常用于本地開發(fā)或依賴修復。
    replace github.com/example/foo => ../local/foo
  • exclude(可選): 指定不允許使用的模塊版本。
    exclude github.com/example/foo v1.2.3

1.3.6.2 操作 go.mod 的常用命令

初始化模塊:

go mod init <module-name>

添加依賴:

go get <package>@<version>

自動管理依賴(清理未使用的依賴,并自動添加缺失的依賴):

go mod tidy

1.3.7 go.sum

1.3.7.1 文件介紹

go.sum 是 go.mod 的配套文件,用于記錄模塊依賴的校驗信息,確保依賴的完整性一致性
作用:

  • 完整性驗證: 在拉取依賴包時,Go 會校驗包的實際內(nèi)容是否與 go.sum 文件中的哈希值一致,防止依賴被篡改。
  • 緩存優(yōu)化: 記錄的校驗值使得 Go 工具可以高效地在本地或遠程緩存中找到匹配的依賴包。

一個典型的 go.sum 文件內(nèi)容如下:

github.com/gin-gonic/gin v1.9.0 h1:4Fq34...
github.com/gin-gonic/gin v1.9.0/go.mod h1:kf4B...
golang.org/x/net v0.5.0 h1:3jHk...
golang.org/x/net v0.5.0/go.mod h1:Lsk4...

各部分含義:

  • 每一行記錄一個依賴包的校驗信息。
  • 每個依賴包有兩類記錄:
    • <模塊名> <版本> <校驗值>:依賴包的完整內(nèi)容校驗值。
    • <模塊名> <版本>/go.mod <校驗值>:依賴包的 go.mod 文件校驗值。

1.3.7.2 管理 go.sum 文件

  • 自動生成: 當運行 go mod tidy 或使用依賴時,go.sum 會自動更新。
  • 不要手動修改: go.sum 是由 Go 工具自動維護的,手動修改可能導致校驗錯誤。

1.4 常用命令

1.4.1 Go Modules 常用命令

1.4.1.1 模塊初始化

go mod init <module-name>

初始化一個新的模塊。

會在當前目錄下生成 go.mod 文件。

示例:

go mod init example.com/mymodule

1.4.1.2 添加依賴

go get <package>@<version>

下載指定的依賴包并更新 go.mod 和 go.sum 文件。

@<version> 可選,不指定時默認獲取最新版本。

示例:

go get github.com/gin-gonic/gin@v1.9.0

如果省略版本:

go get github.com/gin-gonic/gin

會安裝最新穩(wěn)定版。

1.4.1.3 移除未使用的依賴

go mod tidy

自動清理未使用的依賴包,并下載缺失的依賴。
同時更新 go.mod 和 go.sum 文件。

1.4.1.4 下載所有依賴

go mod download

下載 go.mod 文件中列出的所有依賴包到本地模塊緩存。

1.4.1.5 查看依賴列表

go list -m all

列出當前模塊的所有依賴及其版本(包括直接和間接依賴)。

1.4.1.6 檢查依賴更新

go list -u -m all

列出所有依賴,并顯示可以更新的版本(如果有)。

1.4.1.7 替換依賴

在 go.mod 文件中添加 replace 指令,替換依賴的路徑或版本。

replace github.com/example/foo => ../local/foo

替換為本地路徑版本。

更新依賴后,運行:

go mod tidy

1.4.1.8 移除模塊中的依賴

手動刪除代碼中不需要的依賴后運行:

go mod tidy

這會從 go.mod 中移除未使用的依賴。

1.4.1.9 驗證依賴

go mod verify

驗證所有依賴的校驗值是否與 go.sum 文件一致,用于檢查依賴包是否被篡改。

1.4.1.10 查看模塊路徑

go env GOMOD

輸出當前模塊的 go.mod 文件路徑。如果沒有使用 Go Modules,輸出為空。

1.4.2 開發(fā)中的常用命令

1.4.2.1 編譯并運行項目

go run .

在當前模塊中運行主程序文件。

1.4.2.2 構建可執(zhí)行文件

go build

在當前目錄下生成可執(zhí)行文件。

使用 Go Modules 時,會自動管理依賴。

1.4.2.3 安裝依賴工具

go install <package>

將指定的模塊安裝到 GOPATH/bin 或配置的 GOBIN 目錄下,其的核心功能是 編譯并安裝 Go 工具或程序,而不是直接管理依賴。具體來說:將指定的模塊或包編譯成可執(zhí)行文件,并安裝到 GOBIN 或 GOPATH/bin 目錄下。

1.4.2.4 清理模塊緩存

go clean -modcache

清理本地模塊緩存(默認存儲在 ~/.cache/go-build)。

1.4.3 依賴調(diào)試與版本控制

1.4.3.1 強制使用特定版本

go get <package>@v1.2.3

強制將依賴包的版本降級或升級到指定版本。

1.4.3.2 顯示依賴關系

go mod graph

生成依賴關系的圖形表示(文本形式)。

總結

到此這篇關于Go基礎教程之環(huán)境搭建及常用命令的文章就介紹到這了,更多相關Go環(huán)境搭建內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 重學Go語言之如何使用Context

    重學Go語言之如何使用Context

    Context,中文也叫做上下文,Go語言在1.7版本中新增的context包中定義了Context,下面我們就來一起看看如何在Go語言中使用Context吧
    2023-07-07
  • 解析golang 標準庫template的代碼生成方法

    解析golang 標準庫template的代碼生成方法

    這個項目的自動生成代碼都是基于 golang 的標準庫 template 的,所以這篇文章也算是對使用 template 庫的一次總結,本文通過實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2021-11-11
  • Go語言中通過Lua腳本操作Redis的方法

    Go語言中通過Lua腳本操作Redis的方法

    這篇文章主要給大家介紹了關于Go語言中通過Lua腳本操作Redis的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。
    2018-01-01
  • Go語言編譯環(huán)境設置教程

    Go語言編譯環(huán)境設置教程

    Go語言支持高并發(fā)(goroutine)、自動垃圾回收,編譯為跨平臺二進制文件,云原生兼容且社區(qū)活躍,開發(fā)便捷,內(nèi)置測試與vet工具輔助檢測錯誤,依賴模塊化管理,提升開發(fā)效率
    2025-07-07
  • 詳解如何在golang鏡像中設置指定時區(qū)

    詳解如何在golang鏡像中設置指定時區(qū)

    這篇文章主要為大家詳細介紹了如何在golang鏡像中設置指定時區(qū),文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的可以了解一下
    2023-04-04
  • Go標準庫http與fasthttp服務端性能對比場景分析

    Go標準庫http與fasthttp服務端性能對比場景分析

    這篇文章主要介紹了Go標準庫http與fasthttp服務端性能比較,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • 如何使用Golang創(chuàng)建與讀取Excel文件

    如何使用Golang創(chuàng)建與讀取Excel文件

    我最近工作忙于作圖,圖表,需要自己準備數(shù)據(jù)源,所以經(jīng)常和Excel打交道,下面這篇文章主要給大家介紹了關于如何使用Golang創(chuàng)建與讀取Excel文件的相關資料,需要的朋友可以參考下
    2022-07-07
  • Go語言中一些不常見的命令參數(shù)詳解

    Go語言中一些不常見的命令參數(shù)詳解

    這篇文章主要給大家介紹了關于Go語言中一些不常見的命令參數(shù)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-12-12
  • 一文帶你了解Go語言中方法的調(diào)用

    一文帶你了解Go語言中方法的調(diào)用

    這篇文章主要和大家分享一下Go語言中的方法的調(diào)用,文中的示例代碼講解詳細,對我們學習Go語言有一定的幫助,需要的小伙伴可以參考一下
    2022-12-12
  • Golang中urlencode與urldecode編碼解碼詳解

    Golang中urlencode與urldecode編碼解碼詳解

    這篇文章主要給大家介紹了關于Golang中urlencode與urldecode編碼解碼的相關資料,在Go語言中轉碼操作非常方便,可以使用內(nèi)置的encoding包來快速完成轉碼操作,Go語言中的encoding包提供了許多常用的編碼解碼方式,需要的朋友可以參考下
    2023-09-09

最新評論

枣阳市| 尼木县| 龙泉市| 浑源县| 芦溪县| 张家港市| 巨鹿县| 耿马| 工布江达县| 眉山市| 荔浦县| 东城区| 连江县| 盐边县| 额尔古纳市| 马尔康县| 石楼县| 会昌县| 阿坝县| 哈密市| 新民市| 福鼎市| 菏泽市| 丰城市| 蕲春县| 宣恩县| 宁南县| 临夏县| 武威市| 祥云县| 连州市| 广水市| 饶平县| 宣城市| 临朐县| 巴林右旗| 图们市| 平遥县| 镇坪县| 都江堰市| 宜丰县|