go语言环境配置(mac)

概述

Go is an open source programming language that makes it easy to build simple, reliable, and efficient software

开始学习go语言了,先看看环境配置

相关文档

下载及安装

我使用的是当前最新版本1.19.3,下载对应系统(mac)的版本即可,一路点击下一步就安装成功了

  • 终端执行go version校验是否安装成功
$ go version
go version go1.19.3 darwin/amd64

配置环境变量

export GOROOT=/usr/local/go
export GOPATH=/Users/xmly/go
export GO111MODULE=on
export GOPROXY=https://goproxy.cn
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

终端执行source ~/.zshrc后生效

GOROOT为go安装目录,go原生的工具在该目录下
GOPATH通常 存放自己开发的代码(不建议)第三方依赖库
配置export PATH=$PATH:$GOROOT/bin:$GOPATH/bin是为了保证在任何目录下可执行go 二进制可执行文件
GO111MODULE=on 在go 1.16开始默认为on
GOPROXY:Go语言官方提供的一种通过中间代理商来为用户提供包下载服务的方式,这里设置为https://goproxy.cn

多版本安装及卸载

$ go install golang.org/dl/go1.21.3@latest
$ go1.21.3 download
  • 对比查看环境信息变化
$ go1.21.3 env
$ go1.21.3 env GOROOT
  • 卸载
  1. 删除go安装目录GOROOT,一般为/usr/local/go
  2. 删除go bin目录,如mac上的/etc/paths.d/go文件

环境信息说明

  • 下载安装后在终端执行go env则可查看到环境信息
  • 环境参数解释
$ go env
GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/xmly/Library/Caches/go-build"
GOENV="/Users/xmly/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/xmly/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/xmly/go"
GOPRIVATE=""
GOPROXY="https://goproxy.cn"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GOVCS=""
GOVERSION="go1.16.8"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/dev/null"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/6h/m_5kf5zj42l549s35gb8ldtr0000gn/T/go-build979516492=/tmp/go-build -gno-record-gcc-switches -fno-common"
  1. GOROOT:GOROOT指的Golang语言的安装路径
  • mac 默认路径为/usr/local/go
  • 几个目录
    • bin:go 二进制工具目录
    • doc:go 文档目录
    • pkg:go 第三方包目录
    • src:go 源码目录
  1. GOPATH:通常 存放自己开发的代码(不建议)第三方依赖库
    默认目录是~/go(unix平台)
    几个目录:
  • bin:存放编译后的可执行文件
  • pkg:依赖包编译后的*.a文件
  • src:存放源码文件,以代码包为组织形式

每一个项目尽量只设置一个 GOPATH
如果不存在,可自行创建mkidr bin pkg src

  1. GO111MODULE
    go 1.16 之后,已经默认 GO111MODULE=on 为默认值,也就是默认使用 go modules 进行依赖管理
  • go modules 依赖包查找机制
    • 下载的第三方依赖存放在$GOPATH/pkg/mod
    • go install 生成的可执行文件存放在$GOPATH/bin
    • 依赖包的查找顺序:工作目录 => $GOPATH/pkg/mod => $GOROOT/src

IDE

  • vs code
    • 安装插件extentions:Go for Visual Studio Code、Code Runner
    • 不能运行,可进入目录执行go mod init hello.go (go1.21.3 mod init hello.go)
  • goland
  • go playground
    • https://play.golang.wiki
    • https://play.studygolang.com
    • https://goplay.space
    • https://goplay.tools

helloworld

$ mkdir go_project
$ mkdir helloworld
$ cd helloworld
$ go mod init helloworld    # 一般保持跟项目名一致
$ ls
$ cat go.mod
module helloworld

go 1.19

vs code打开项目所在目录,并创建hello.go文件,内容如下

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!") // 新手错误不能使用单引号,报more than one character in rune literal 错误,在go中使用双引号来表达字符串
}
  • 运行
    • vs code直接运行,右键run code或使用快捷键
    • 命令行运行,进入项目所在目录执行go run hello.go

其他

gopls

$ go install golang.org/x/tools/gopls@latest
  • 七个工具包
gotests
gomodifytags
impl
goplay
dlv
staticcheck
gopls

gotests:该工具可以自动生成针对 Go 代码中函数的单元测试代码。可以极大地提高我们的开发效率和代码质量。
gomodifytags:该工具可以快速修改结构体字段 tag 的值。比如对于 JSON 或 YAML 序列化时需要使用的 tag,可以直接使用该工具修改
impl:该工具可以根据接口自动生成对应的方法模板。可以让我们更加方便地实现某些接口
goplay:该工具可以让我们在浏览器上运行 Go 代码片段并查看输出结果。非常适合写一些简短的测试代码
dlv:该工具是 Go 语言的调试器,可以帮助我们在开发过程中快速定位问题
staticcheck:该工具可以检查 Go 代码中的静态错误,包括数据竞争,错误的 API 用法等等,可以帮助我们减少一些常见的错误
gopls:该工具是 Go 语言的官方语言服务器,提供了丰富的代码语义分析和编辑功能,如自动格式化、自动导入包、代码高亮等等。可以极大地提高我们的开发效率

在VSCode中切换不同版本的golang

  1. 注释掉 ~.zshrc 中的# export GOROOT=/usr/local/go
  2. 如果报错,需重启item,重启vscode
  3. 点击左下角闪电⚡️go版本,选择需要的版本即可