常用命令

//查看go环境变量路径
which go
//查看go语言环境信息
go env
//查看go版本,查看是否安装成功
go version

GOROOT

GOROOT
WindowsGOROOTC:/goMac OSLinuxGOROOTusr/local/go
GOROOT/binGOROOT/bin

GOMODULE

composernpm
  1. Go 语言长久以来的依赖管理问题。

  2. “淘汰”现有的 GOPATH 的使用模式。

  3. 统一社区中的其它的依赖管理工具(提供迁移功能)

在 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