常用命令
//查看go环境变量路径
which go
//查看go语言环境信息
go env
//查看go版本,查看是否安装成功
go version
GOROOT
GOROOT
WindowsGOROOTC:/goMac OSLinuxGOROOTusr/local/go
GOROOT/binGOROOT/bin
GOMODULE
composernpm
-
Go 语言长久以来的依赖管理问题。
-
“淘汰”现有的 GOPATH 的使用模式。
-
统一社区中的其它的依赖管理工具(提供迁移功能)
在 Go modules 中,我们能够使用如下命令进行操作:
关于go.mod
go.mod是Go项目的依赖描述文件,该文件主要用来描述两个事情:
- 当前项目名(module)是什么。每个项目都应该设置一个名称,当前项目中的包(package)可以使用该名称进行相互调用。
- 当前项目依赖的第三方包名称。项目运行时会自动分析项目中的代码依赖,生成go.sum依赖分析结果,随后go编译器会去下载这些第三方包,然后再编译运行。
我们只需设置该环境变量即可正常下载被墙的源码包了。在项目目录 或者 项目子模块下,运行下面命令,会产生一个go.mod文件
go mod init
go.modgo mod init 项目名称
module my-hello
my-hellomodule
go.sumgo.mod
使用go.mod
使用go.mod意即用go.mod进行项目依赖管理。我们有两种go.mod的使用方式:IDE-vgo和命令行方式。
vgoGo Modulego mod
vgo
Proxydirect
https://goproxy.cnhttps://goproxy.ioProject SDK=https://mirrors.aliyun.com/goproxy/
这里请务必选择一个代理地址输入。
GOPROXY
这个环境变量主要是用于设置 Go 模块代理(Go module proxy),其作用是用于使 Go 在后续拉取模块版本时能够脱离传统的 VCS 方式,直接通过镜像站点来快速拉取。
https://proxy.golang.org,directproxy.golang.org
# Enable the go modules feature
export GO111MODULE=on
# Set the GOPROXY environment variable
export GOPROXY=https://goproxy.cn
go env -w GO111MODULE=on
# 同时将代理进行替换
go env -w GOPROXY=https://goproxy.cn,direct
GONOPROXY/GONOSUMDB/GOPRIVATE
这三个环境变量都是用在当前项目依赖了私有模块,例如像是你公司的私有 git 仓库,又或是 github 中的私有库,都是属于私有模块,都是要进行设置的,否则会拉取失败。
go env -w GOPRIVATE="*.example.com"
这样子设置的话,所有模块路径为 example.com 的子域名(例如:git.example.com)都将不经过 Go module proxy 和 Go checksum database,需要注意的是不包括 example.com 本身
GOBIN
GOBIN
go installGOPATH/bin
GOPATH
GOPATHworkspace
$HOME/go
--bin # 存放编译后的可执行文件
--pkg # 依赖包编译后的*.a文件
--src # 项目源代码的存放路径
$GOPATH=$HOME/goworkspace
vim /etc/profile
export GOROOT=/usr/local/go #设置为go安装的路径,有些安装包会自动设置默认的goroot
export GOPATH=$HOME/goproj01:$HOME/goproj02 #默认安装包的路径
export GOBIN=$HOME/gobin #Go程序的可执行文件的目录
export PATH=$PATH:$GOROOT/bin:$GOPATH:$GOBIN
source /etc/profile
GOPATHworkspacesrc$HOME/goproj01$GOPATH/src
# 项目目录是:
$HOME/go
--bin
--pkg
--src
-- main
-- pkg1
-- say.go
-- hello_world.go
# hello_world.go
package main
import (
V "main/pkg1" // 给包起一个别名
)
func main() {
V.SayHello()
}
$GOPATH/src
$ go install
go install/go get和 go的工具等会用到GOPATH环境变量。此时会在 :
*.amain.gomain
7、配置 .gitignore 文件时,忽略 pkg、bin 目录
# .gitignore
pkg/*
bin/*
为什么弃用 GOPATH 模式
$GOPATH/src.go
go getgithub.com/foo/bar
切换国内Go源
#查看配置
go env
#修改配置
go env -w GOPROXY=https://goproxy.cn
国内提供的sum验证服务
go env -w GOSUMDB=sum.golang.google.cn
程序操作环境变量
package main
import (
"fmt"
"os"
"strings"
)
func main() {
err := os.Setenv("ENV_NAME", "dev") //临时设置 系统环境变量
if err != nil {
fmt.Println(err.Error())
}
env := os.Getenv("Project SDK")
fmt.Printf(env)
for _, v := range os.Environ() { //获取全部系统环境变量 获取的是[]string
str := strings.Split(v, "=")
fmt.Printf("%s = %s \n", str[0], str[1])
}
}
Go调用包报错
build command-line-arguments: cannot find module for path
方法1:如果之前Go环境安装是直接下载msi文件
- 1、打开shell命令窗:ctrl+r , 输入 cmd,
- 2、输入go env -w GO111MODULE=auto,这句是将GO111MODULE设为自动。
- 3、再次测试,问题解决
方法2:如果是自己设置的环境变量
- 1、右键计算机,点击属性,打开高级系统设置,点击环境变量,找到GO111MODULE,编辑GO111MODULE,将on改为auto或者off。
- 2、再次测试,问题解决
Failed to run File Watcher 'go fmt'.
The watcher has been disabled.
Error: Invalid executable
sudo chmod -R 777 /usr/local/go