• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    Go基础教程之环境搭建及常用命令

    发布者: 竹韵9933 | 发布时间: 2025-8-14 07:27| 查看数: 86| 评论数: 0|帖子模式

    1 Go


    1.1 简介


    1.1.1 定义

    Go语言,也被称为Golang,是一种由Google开发的静态类型、编译型编程语言,是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。
    1. Go
    复制代码
    是从2007年末由
    1. Robert Griesemer, Rob Pike, Ken Thompson
    复制代码
    主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。
    官方网站:https://go.dev/
    中文网站:https://studygolang.com/

    1.1.2 特点用途

    Go语言的特点:

    • 编译型语言:
      Go语言通过编译生成机器码,因此具有较高的运行效率,接近C语言的性能。
    • 并发编程支持:
      Go语言内置了轻量级的并发支持,通过goroutine和channel实现高效的并发编程。这使得Go语言非常适合开发高并发应用,如网络服务器、分布式系统等。
    • 简洁的语法:
      Go语言的语法简洁明了,易于学习和使用,降低了编程的复杂性。
    • 自动垃圾回收:
      Go语言具有自动垃圾回收机制,可以有效避免内存泄漏问题,减轻了开发者对内存管理的负担。
    • 跨平台支持:
      编译后的Go程序可以在不同操作系统上运行,如Windows、Linux、macOS等。
    • 标准库丰富:
      Go语言提供了丰富的标准库,包含了许多实用的工具和功能,如网络编程、文件操作、加密等,方便开发者快速构建软件系统。
    • 工具链完善:
      Go语言拥有一个完善的工具链,包括代码格式化工具(gofmt)、性能分析工具(go tool pprof)、测试工具(go test)等,这些工具有助于提高开发效率和代码质量。
    Go语言的用途:

    • 服务器端开发:
      Go语言非常适合用于开发高性能的Web服务器和API服务。使用Go语言开发的Gin和Beego等框架,能够高效地处理HTTP请求。
    • 云计算:
      Go语言是云计算领域的重要编程语言。许多云服务、云应用程序都是用Go语言开发的。例如,Google的Kubernetes容器编排系统和Docker容器化平台都是用Go语言编写的。
    • 大数据处理:
      Go语言在处理大规模数据时表现出色。得益于其高效的并发支持,Go语言能够显著提升数据处理性能。
    • 系统编程:
      Go语言也可以用于开发操作系统、网络工具等系统软件。
    • 网络编程:
      Go语言提供了简洁而强大的网络编程库,使得开发网络应用程序变得简单和高效。
    • 静态分析工具:
      Go语言的简洁性和灵活性使其成为开发静态分析工具的理想选择。
    • 命令行工具:
      许多高效的命令行工具都是用Go语言编写的。
    • 物联网开发:
      Go语言具有运行效率高、并发编程支持强等特点,非常适合物联网开发。
    • 区块链开发:
      Go语言的安全性和高效性使其成为区块链开发的首选语言之一。以太坊、Hyperledger Fabric等知名区块链平台均使用Go语言作为核心开发语言。

    1.2 环境配置


    1.2.1 下载安装

    访问国内Go语言网站:Go语言中文网


    1.2.2 环境配置

    1.2.2.1 添加环境变量
    win+e打开,右击此电脑,选择属性,搜索查看高级系统设置,点击环境变量

    添加变量:

    • 设置
      1. GOROOT
      复制代码
      (安装路径):
      点击
      1. 系统变量
      复制代码
      下的
      1. 新建
      复制代码

      名称:
      1. GOROOT
      复制代码
      ,值:C:\Program Files\Go(
      1. Go 的安装路径
      复制代码

    • 设置
      1. GOPATH
      复制代码
      (项目路径):
      GOPATH 是
      1. Go 项目工作目录
      复制代码
      新建一个目录,例如 D:\GoWorkspace。
      在系统变量中添加:
      名称:
      1. GOPATH
      复制代码
      ,值:D:\GoWorkspace。
    • 添加
      1. PATH
      复制代码

      找到系统变量中的
      1. Path
      复制代码
      ,点击
      1. 编辑
      复制代码

      添加以下路径:
      1. %GOROOT%\bin
      复制代码
      1. Go 的可执行文件路径
      复制代码
      )。
      1. %GOPATH%\bin
      复制代码
      1. GOPATH 的 bin 目录
      复制代码
      )。
    1.2.2.2 各个环境变量理解

      1. GOROOT
      复制代码
      作用
      1. GOROOT
      复制代码
      1. Go
      复制代码
      的安装路径,用于告诉
      1. Go
      复制代码
      工具链(如
      1. go build
      复制代码
      1. go run
      复制代码
      )Go 的核心库在哪里。
      默认情况下,Go 的安装程序会自动检测其安装路径并设置好
      1. GOROOT
      复制代码
      ,因此 通常不需要手动添加
      1. GOROOT
      复制代码
      环境变量。
      那么就,是否需要在环境变量中手动添加?如果
      1. GOROOT
      复制代码
      1. Go
      复制代码
      的默认路径(如
      1. C:\Program Files\Go
      复制代码
      ),且未修改过安装路径,无需手动添加 GOROOT。但是,如果 Go 安装到了
      1. 非默认路径
      复制代码
      ,或者 Go 工具链出现了找不到标准库的问题,那么可以手动设置 GOROOT。
      1. GOPATH
      复制代码
      作用
      1. GOPATH
      复制代码
      是 Go 项目的工作空间目录,用于存储源码、依赖包和生成的二进制文件。
      它是
      1. Go 1.x
      复制代码
      的工作机制(在
      1. Go Modules
      复制代码
      之前非常重要),用来组织代码结构。

        1. GOPATH
        复制代码
        必要性
        如果使用的是
        1. Go Modules
        复制代码
        (现代 Go 的推荐方式),
        1. GOPATH
        复制代码
        的作用大大降低,但仍有以下场景需要:

        • 编译后的可执行文件会存放在 GOPATH/bin 中。
        • 某些工具(如 go install)仍然默认依赖 GOPATH。
        • 在不使用 Go Modules 的老项目中,GOPATH 是必需的。

      • 为什么还要添加
        1. GOPATH/bin
        复制代码
        1. PATH
        复制代码
        当用
        1. go install
        复制代码
        安装工具(如 golangci-lint、dlv)时,生成的可执行文件会存放到
        1. GOPATH/bin
        复制代码
        下。
        1. GOPATH/bin
        复制代码
        添加到
        1. Path
        复制代码
        中,方便在全局运行这些工具。
      • 是否需要添加
        1. GOPATH
        复制代码
        如果项目完全基于
        1. Go Modules
        复制代码
        ,可以不显式配置
        1. GOPATH
        复制代码
        如果需要兼容老项目,或安装工具包,建议配置。
      • 是否需要添加
        1. GOPATH/bin
        复制代码
        1. PATH
        复制代码
        必须添加,否则用
        1. go install
        复制代码
        安装的工具无法直接在命令行中使用。

    • 实际建议
      根据现代 Go 的实践,以下是建议的简化配置:

        1. GOROOT
        复制代码
        :不需要手动设置(如果使用默认安装路径)。
        1. GOPATH
        复制代码
        :对于大多数现代项目(使用
        1. Go Modules
        复制代码
        ),只需设置一个工作目录(如 D:\GoWorkspace)作为
        1. GOPATH
        复制代码
        。将
        1. GOPATH/bin
        复制代码
        添加到系统 PATH,方便全局使用工具。


    1.2.3 验证环境变量

    打开新的命令行窗口,运行以下命令:
    1. go env
    复制代码
    确保输出的 GOROOT 和 GOPATH 正确。

    1.3 包管理工具 Go Modules


    1.3.1 开启使用
    1. Go Modules
    复制代码
    1. Go
    复制代码
    语言推荐的依赖管理方式。
    启用 Go Modules:
    1. go env -w GO111MODULE=on
    复制代码
    现在的新版本 Go(
    1. 1.16
    复制代码
    及更高版本)默认已经启用了
    1. Go Modules
    复制代码
    ,因此在一般情况下,不需要手动设置
    1. GO111MODULE
    复制代码
    检查是否成功:
    1. go env | findstr GO111MODULE
    复制代码
    初始化项目, 在项目目录下运行:
    1. go mod init <模块名称>
    复制代码
    例如,创建一个模块名称为 example.com/mymodule 的项目:
    1. go mod init example.com/mymodule
    复制代码
    这会生成一个 go.mod 文件,内容类似如下:
    1. module example.com/mymodule

    2. go 1.20
    复制代码
    运行项目:
    1. go run .
    复制代码
    1.3.2 添加依赖包

    当在代码中引入第三方包时(例如
    1. github.com/gin-gonic/gin
    复制代码
    ),
    1. Go
    复制代码
    会自动解析并下载依赖包。
    例如,编写代码:
    1. package main

    2. import (
    3.     "github.com/gin-gonic/gin"
    4. )

    5. func main() {
    6.     r := gin.Default()
    7.     r.GET("/", func(c *gin.Context) {
    8.         c.JSON(200, gin.H{"message": "Hello, World!"})
    9.     })
    10.     r.Run()
    11. }
    复制代码
    运行:
    1. go mod tidy
    复制代码
    这会下载所需的依赖包并更新 go.mod 和 go.sum 文件。
    1. go.mod
    复制代码
    记录了
    1. 直接依赖
    复制代码
    1. go.sum
    复制代码
    记录了依赖的校验信息。

    1.3.3 配置国内包源

    由于网络原因,下载依赖包时可能会很慢,建议更换为国内包源。
    1.3.3.1 通过 go env 配置
    设置
    1. Go Modules
    复制代码
    使用国内代理:
    1. go env -w GOPROXY=https://goproxy.cn,https://mirrors.aliyun.com,direct
    复制代码
    验证配置:
    1. go env | findstr GOPROXY
    复制代码
    输出类似:
    1. GOPROXY=https://goproxy.cn,https://mirrors.aliyun.com,direct
    复制代码
    1.3.3.2 修改环境变量
    如果不想每次都设置,可以直接在系统环境变量中添加
    1. GOPROXY
    复制代码
    打开环境变量设置,添加一个新变量:

    • 名称:
      1. GOPROXY
      复制代码
    • 值:
      1. https://goproxy.cn,https://mirrors.aliyun.com,direct
      复制代码
    1. GOPROXY
    复制代码
    可以配置多个代理地址,并用逗号(
    1. ,
    复制代码
    )分隔。
    1. Go
    复制代码
    会按照顺序依次尝试这些代理,直到找到一个可用的
    这里加
    1. direct
    复制代码
    表示如果在指定的代理服务器上找不到模块,
    1. Go
    复制代码
    会直接尝试从模块源(如 Git 仓库)下载依赖。这是一种后备机制,确保即使代理不可用,依赖仍有机会通过源下载。

    1.3.4 更新和管理依赖


    • 下载和清理依赖:
      1. go mod tidy
      复制代码
      :这会添加缺失的依赖,并移除未使用的依赖。
    • 查看依赖包:
      1. go list -m all
      复制代码

    • 升级依赖:
      1. go get -u <包名>
      复制代码
      例如,升级 Gin:
      1. go get -u github.com/gin-gonic/gin
      复制代码
    • 指定依赖版本:
      编辑
      1. go.mod
      复制代码
      文件,直接指定版本:
      1. require github.com/gin-gonic/gin v1.9.0
      复制代码
      然后运行:
      1. go mod tidy
      复制代码

    1.3.5 没有域名时项目操作

    如果没有域名,又想避免将来迁移麻烦,可以使用以下方式:
    本地开发时使用简单名称:
    1. go mod init myproject
    复制代码
    以后需要发布时再修改: 修改
    1. go.mod
    复制代码
    文件的
    1. module
    复制代码
    字段即可,比如:
    1. module github.com/username/myproject
    复制代码
    结合私有模块代理: 如果项目是私有的,可以使用 GOPRIVATE 指定私有模块地址:
    1. go env -w GOPRIVATE=company.com
    复制代码
    1.3.6 go.mod

    1.3.6.1 文件介绍
    1. go.mod
    复制代码
    1. Go Modules
    复制代码
    的核心文件,用来定义模块及其依赖项。
    一个典型的 go.mod 文件可能包含以下内容:
    1. module example.com/mymodule

    2. go 1.20require (    github.com/gin-gonic/gin v1.9.0    golang.org/x/net v0.5.0)
    复制代码
    各部分含义:

      1. module
      复制代码
      : 定义模块的名称(通常是项目的根路径)。模块名称决定了这个项目在其他地方引入时的路径。
      1. go
      复制代码
      : 指定最低支持的 Go 版本。例如,go 1.20 表示此模块要求 Go 1.20 或更高版本。
      1. require
      复制代码
      : 列出此模块的直接依赖包及其版本。
      1. replace
      复制代码
      (可选): 用于替换依赖包的路径或版本,常用于本地开发或依赖修复。
      1. replace github.com/example/foo => ../local/foo
      复制代码
      1. exclude
      复制代码
      (可选): 指定不允许使用的模块版本。
      1. exclude github.com/example/foo v1.2.3
      复制代码
    1.3.6.2 操作 go.mod 的常用命令
    初始化模块:
    1. go mod init <module-name>
    复制代码
    添加依赖:
    1. go get <package>@<version>
    复制代码
    自动管理依赖(清理未使用的依赖,并自动添加缺失的依赖):
    1. go mod tidy
    复制代码
    1.3.7 go.sum

    1.3.7.1 文件介绍
    1. go.sum
    复制代码
    1. go.mod
    复制代码
    的配套文件,用于记录模块依赖的
    1. 校验信息
    复制代码
    ,确保依赖的
    1. 完整性
    复制代码
    1. 一致性
    复制代码

    作用:

      1. 完整性验证
      复制代码
      : 在拉取依赖包时,Go 会校验包的实际内容是否与
      1. go.sum
      复制代码
      文件中的哈希值一致,防止依赖被篡改。
      1. 缓存优化
      复制代码
      : 记录的校验值使得 Go 工具可以高效地在本地或远程缓存中找到匹配的依赖包。
    一个典型的 go.sum 文件内容如下:
    1. github.com/gin-gonic/gin v1.9.0 h1:4Fq34...
    2. github.com/gin-gonic/gin v1.9.0/go.mod h1:kf4B...
    3. golang.org/x/net v0.5.0 h1:3jHk...
    4. golang.org/x/net v0.5.0/go.mod h1:Lsk4...
    复制代码
    各部分含义:

    • 每一行记录一个依赖包的校验信息。
    • 每个依赖包有两类记录:

        1. <模块名> <版本> <校验值>
        复制代码
        :依赖包的完整内容校验值。
        1. <模块名> <版本>/go.mod <校验值>
        复制代码
        :依赖包的
        1. go.mod
        复制代码
        文件校验值。

    1.3.7.2 管理 go.sum 文件

    • 自动生成: 当运行
      1. go mod tidy
      复制代码
      或使用依赖时,
      1. go.sum
      复制代码
      会自动更新。
    • 不要手动修改:
      1. go.sum
      复制代码
      是由 Go 工具自动维护的,手动修改可能导致校验错误。

    1.4 常用命令


    1.4.1 Go Modules 常用命令

    1.4.1.1 模块初始化
    1. go mod init <module-name>
    复制代码
    初始化一个新的模块。
    会在当前目录下生成
    1. go.mod
    复制代码
    文件。
    示例:
    1. go mod init example.com/mymodule
    复制代码
    1.4.1.2 添加依赖
    1. go get <package>@<version>
    复制代码
    下载指定的依赖包并更新
    1.  go.mod
    复制代码
    1. go.sum
    复制代码
    文件。
    1. @<version>
    复制代码
    可选,不指定时默认获取最新版本。
    示例:
    1. go get github.com/gin-gonic/gin@v1.9.0
    复制代码
    如果省略版本:
    1. go get github.com/gin-gonic/gin
    复制代码
    会安装最新稳定版。
    1.4.1.3 移除未使用的依赖
    1. go mod tidy
    复制代码
    自动清理未使用的依赖包,并下载缺失的依赖。
    同时更新
    1. go.mod
    复制代码
    1. go.sum
    复制代码
    文件。
    1.4.1.4 下载所有依赖
    1. go mod download
    复制代码
    下载
    1. go.mod
    复制代码
    文件中列出的所有依赖包到本地模块缓存。
    1.4.1.5 查看依赖列表
    1. go list -m all
    复制代码
    列出当前模块的所有依赖及其版本(包括直接和间接依赖)。
    1.4.1.6 检查依赖更新
    1. go list -u -m all
    复制代码
    列出所有依赖,并显示可以更新的版本(如果有)。
    1.4.1.7 替换依赖
    1. go.mod
    复制代码
    文件中添加
    1. replace
    复制代码
    指令,替换依赖的路径或版本。
    1. replace github.com/example/foo => ../local/foo
    复制代码
    替换为本地路径版本。
    更新依赖后,运行:
    1. go mod tidy
    复制代码
    1.4.1.8 移除模块中的依赖
    手动删除代码中不需要的依赖后运行:
    1. go mod tidy
    复制代码
    这会从 go.mod 中移除未使用的依赖。
    1.4.1.9 验证依赖
    1. go mod verify
    复制代码
    验证所有依赖的校验值是否与
    1. go.sum
    复制代码
    文件一致,用于检查依赖包是否被篡改。
    1.4.1.10 查看模块路径
    1. go env GOMOD
    复制代码
    输出当前模块的
    1. go.mod
    复制代码
    文件路径。如果没有使用
    1. Go Modules
    复制代码
    ,输出为空。

    1.4.2 开发中的常用命令

    1.4.2.1 编译并运行项目
    1. go run .
    复制代码
    在当前模块中运行主程序文件。
    1.4.2.2 构建可执行文件
    1. go build
    复制代码
    在当前目录下生成可执行文件。
    使用
    1. Go Modules
    复制代码
    时,会自动管理依赖。
    1.4.2.3 安装依赖工具
    1. go install <package>
    复制代码
    将指定的模块安装到
    1. GOPATH/bin
    复制代码
    或配置的
    1. GOBIN
    复制代码
    目录下,其的核心功能是
    1. 编译并安装 Go 工具或程序
    复制代码
    ,而
    1. 不是直接管理依赖
    复制代码
    。具体来说:
    1. 将指定的模块或包编译成可执行文件,并安装到 GOBIN 或 GOPATH/bin 目录下
    复制代码

    1.4.2.4 清理模块缓存
    1. go clean -modcache
    复制代码
    清理本地模块缓存(默认存储在 ~/.cache/go-build)。

    1.4.3 依赖调试与版本控制

    1.4.3.1 强制使用特定版本
    1. go get <package>@v1.2.3
    复制代码
    强制将依赖包的版本降级或升级到指定版本。
    1.4.3.2 显示依赖关系
    1. go mod graph
    复制代码
    生成依赖关系的图形表示(文本形式)。

    总结

    到此这篇关于Go基础教程之环境搭建及常用命令的文章就介绍到这了,更多相关Go环境搭建内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    来源:互联网
    免责声明:如果侵犯了您的权益,请联系站长(1277306191@qq.com),我们会及时删除侵权内容,谢谢合作!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表