Golang

关注公众号 jb51net

关闭
首页 > 脚本专栏 > Golang > Go环境搭建

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

作者:爱吃牛肉的大老虎

这篇文章主要介绍了Go基础教程之环境搭建及常用命令的相关资料,包括Go语言简介、环境配置、包管理工具GoModules以及常用命令的全面介绍,需要的朋友可以参考下

1 Go

1.1 简介

1.1.1 定义

Go语言,也被称为Golang,是一种由Google开发的静态类型、编译型编程语言,是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。
Go是从2007年末由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语言的用途:

1.2 环境配置

1.2.1 下载安装

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

1.2.2 环境配置

1.2.2.1 添加环境变量

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

添加变量:

1.2.2.2 各个环境变量理解

1.2.3 验证环境变量

打开新的命令行窗口,运行以下命令:

go env

确保输出的 GOROOT 和 GOPATH 正确。

1.3 包管理工具 Go Modules

1.3.1 开启使用

Go Modules 是 Go 语言推荐的依赖管理方式。
启用 Go Modules:

go env -w GO111MODULE=on

现在的新版本 Go(1.16 及更高版本)默认已经启用了 Go Modules,因此在一般情况下,不需要手动设置 GO111MODULE

检查是否成功:

go env | findstr GO111MODULE

初始化项目, 在项目目录下运行:

go mod init <模块名称>

例如,创建一个模块名称为 example.com/mymodule 的项目:

go mod init example.com/mymodule

这会生成一个 go.mod 文件,内容类似如下:

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 配置国内包源

由于网络原因,下载依赖包时可能会很慢,建议更换为国内包源。

1.3.3.1 通过 go env 配置

设置 Go Modules 使用国内代理:

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 修改环境变量

如果不想每次都设置,可以直接在系统环境变量中添加 GOPROXY打开环境变量设置,添加一个新变量:

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

1.3.4 更新和管理依赖

1.3.5 没有域名时项目操作

如果没有域名,又想避免将来迁移麻烦,可以使用以下方式:
本地开发时使用简单名称:

go mod init myproject

以后需要发布时再修改: 修改 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 文件可能包含以下内容:

module example.com/mymodule

go 1.20

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

各部分含义:

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.sum 文件内容如下:

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...

各部分含义:

1.3.7.2 管理 go.sum 文件

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

会安装最新稳定版。

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 开发中的常用命令

1.4.2.1 编译并运行项目

go run .

在当前模块中运行主程序文件。

1.4.2.2 构建可执行文件

go build

在当前目录下生成可执行文件。

使用 Go Modules 时,会自动管理依赖。

1.4.2.3 安装依赖工具

go install <package>

将指定的模块安装到 GOPATH/bin 或配置的 GOBIN 目录下,其的核心功能是 编译并安装 Go 工具或程序,而不是直接管理依赖。具体来说:将指定的模块或包编译成可执行文件,并安装到 GOBIN 或 GOPATH/bin 目录下

1.4.2.4 清理模块缓存

go clean -modcache

清理本地模块缓存(默认存储在 ~/.cache/go-build)。

1.4.3 依赖调试与版本控制

1.4.3.1 强制使用特定版本

go get <package>@v1.2.3

强制将依赖包的版本降级或升级到指定版本。

1.4.3.2 显示依赖关系

go mod graph

生成依赖关系的图形表示(文本形式)。

总结

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

您可能感兴趣的文章:
阅读全文