Go-env

发布时间 2023-09-25 16:45:11作者: 白露~

  1. 如何判断 go 已经在windows上安装好

 
要检查您的Windows计算机上是否已经安装了Go编程语言,可以按照以下步骤进行操作:
  1. 打开命令提示符:在Windows搜索栏中输入“cmd”,然后单击“命令提示符”应用程序。
  2. 在命令提示符中键入以下命令:
复制代码
go version
  1. 如果您已经成功安装了Go语言,将会出现类似于以下内容的输出:
复制代码
go version go1.16.3 windows/amd64
这表明Go版本为1.16.3,平台为Windows 64位,因此说明Go已经在Windows上安装好了。如果未出现任何版本信息,则表示没有安装或者您需要添加Go二进制文件路径到系统环境变量中
 
  1. 使用go env命令就可以查看 Go 的环境变量

使用go env命令就可以查看 Go 的环境变量,不带参数打印所有环境变量:
λ go envset GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\zhuyadong\AppData\Local\go‐build
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=C:\Users\zhuyadong\go
set GOPROXY=https://goproxy.io
set GORACE=
set GOROOT=D:\Program\Go
set GOTMPDIR=
set GOTOOLDIR=D:\Program\Go\pkg\tool\windows_amd64
set GCCGO=gccgo
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=
set CGO_CFLAGS=‐g ‐O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=‐g ‐O2
set CGO_FFLAGS=‐g ‐O2
set CGO_LDFLAGS=‐g ‐O2
set PKG_CONFIG=pkg‐config
set GOGCCFLAGS=‐m64 ‐mthreads ‐fmessage‐length=0 ‐fdebug‐prefix‐map=C:\Temp
 
 
  1. go 1.15 需要手动配置goroot吗,从哪个版本不需要配置

从Go 1.8版本开始,GOROOT环境变量便不再需要手动进行配置。对于Go 1.8及以上版本,Go安装程序会自动将Go二进制文件和工具链安装在默认位置中,不必再手动配置GOROOT环境变量。
因此,对于您提出的Go 1.15版本,也不需要手动配置GOROOT环境变量,除非您想将Go安装到自定义的目录下并使用非默认的安装路径。
 
  1. 常用的Go命令

以下是常用的Go命令、描述以及作用的表格:
命令 描述 作用
go build 编译代码 将Go源代码编译成可执行文件或库文件,生成的二进制文件可以在同一平台的其他机器上运行
go run 编译并运行代码 直接编译并运行Go源代码,不需要生成可执行文件
go fmt 格式化代码 自动格式化Go代码以符合Go官方的格式规范
go get 下载和安装依赖包 下载并安装指定的第三方依赖包到本地计算机,同时也可用于更新依赖包到最新版本
go test 测试代码 运行Go测试文件并输出测试结果
go doc 查看文档 查看指定标准库或第三方依赖包的文档
go mod 管理依赖关系 使用Go Modules管理项目的依赖关系,确保依赖包的版本号和依赖关系正确
除了上述常用命令之外,还有其他许多Go命令,如:go install, go clean, go vet, go tool等。这些命令都提供了丰富的功能来帮助您更高效地开发和调试Go应用程序。
 
  1. 包管理

由于国内众所周知的网络原因,不能直接访问 golang 的官方网站,由此导致不能自动安装依赖项,这也是搭建 Go 开发环境最麻烦的地方。为解决网络问题,有以下几种方法:
1)方法1:找一个可用的 VPN 2)方法2:安装失败后,查看日志,到 github.com 上查找对应的库,下载到本机的对应位置,再执行 go install 进行安装。 3)方法3:使用 gopm 包管理工具,后面详解。 4)方法4:启用 Go Modules,并设置 GOPROXY 使用代理。
 
这里提供手动安装依赖的方法,只需要安装一次,其它各种开发环境都可以共享使用。
  1. go module

自从 Go 官方推出 v1.11 之后,增加新的依赖管理模块并且更加易于管理项目中所需要的模块。
模块是存储在文件树中的 Go 包的集合,其根目录中包含 go.mod 文件。
go.mod 文件定义了模块的路径,它也是用于根目录的导入路径,以及它的依赖性要求。
每个依赖性要求都被写为模块路径和特定语义版本。
 
从 Go 1.11 开始,Go 允许在 $GOPATH/src 外的任何目录下使用 go.mod 创建项目。在 $GOPATH/src 中,为了兼容性,Go 命令仍然在旧的 GOPATH 模式下运行。
当 module 功能启用时, GOPATH 在项目构建过程中不再担当 import 的角色,但它仍然存储下载的依赖包,具体位置在 $GOPATH/pkg/mod
为了保持与兼容,环境变量如下设置:
  • GOROOT : 不需要设置,设置了也没关系
  • GOPATH : 保持默认。设置其它目录也可以,但 项目代码 不能放在%GOPATH%\src 目录下,否则 go module 需要明确启用
  • GO111MODULE : 保持默认。
  • GOPROXY : 值为 https://goproxy.io 。设置代理,启用模块后,用于下载需要FQ才能访问的包。
  • 其它可用的代理网址:
https://goproxy.io https://athens.azurefd.net https://goproxy.cn https://gocenter.io
Go官方推出官方模块代理是 https://proxy.golang.org (被墙状态);github上的镜像仓库:https://github.com/goproxyio/goproxy 。
这样设置的好处是,当项目源代码在 %GOPATH%\src 目录下时,使用旧版本的模式查 找第三方工具、包;当项目源代码不在 %GOPATH%\src 目录下,并且其父路径上的任 何一个目录有 go.mod 文件,就自动启用 go module。
GO111MODULE 有以下几种值:
  • off:go 命令行将不会支持 module 功能, 寻找依赖包的方式将会沿用旧版本那种通过 vendor 目录或者 GOPATH 模式来查找。
  • on:go命令行会使用 modules,而一点也不会去 GOPATH 目录下查找。
  • auto:默认值,go 命令行将会根据当前目录来决定是否启用 module 功能。这种情况下可以分为两种情形:当前目录在 GOPATH/src 之外,且该目录包含go.mod 文件,或者该目录是包含 go.mod 文件的目录的子目录。
打开命令行,保证当前目录不是 %GOPATH% 及其子目录,执行 go get 即可正常安装第三方工具包。
 
set GOPROXY=https://mirrors.cloud.tencent.com/go/,direct
  1. go 项目中的 module, make ,makefile 三者是什么关系

Go 项目中的 Module、Make 和 Makefile 是三个不同的概念,它们之间存在一定的关系。
Module 是 Go 1.11 版本引入的一种包管理机制,用于管理项目依赖关系和版本号。通过定义一个 go.mod 文件来指定项目依赖项,可以方便地下载和安装第三方库,并确保依赖项的版本与关系正确。
 
Make 是一个常用的工具,用于基于 Makefile 文件自动化执行一系列操作。在 Go 项目中,Make 常被用于构建、测试、打包、部署等任务,以简化这些繁琐的操作流程。
 
Makefile 是一个文本文件其中包含了一系列规则和命令,用于告诉 Make 工具如何编译、链接、打包和发布项目代码。通过编写 Makefile 文件,可以定义一些“目标”(Targets),每个目标都对应着一组需要执行的命令,从而实现自动化构建和管理项目的目的。
 
因此,Module、Make 和 Makefile 在 Go 项目中都有各自的作用。
  • Module 用于管理依赖项和版本号,
  • Make 用于自动化执行操作,
  • Makefile 用于定义规则和命令。
 
在实际开发中,这三个概念常常结合使用,以提高开发效率和代码质量。
例如,可以使用 Makefile 定义一些常用的构建指令,如编译、测试、静态代码分析、构建 Docker 镜像等,同时使用 Module 管理依赖关系,确保依赖包的版本号和依赖关系正确。