https://studygolang.com/dl
下载之后傻瓜式安装,一路next即可,也可以修改文件安装路径
如果是默认安装C盘不用进行下面操作
1.在系统变量中添加GOROOT
2.添加系统变量中的Path
4.在$GOPATH
目录下新建3个子目录,src,pkg,bin
5.测试
记得go项目文件要保存在自己设置的GOPATH路径下。其实现在不推荐项目文件放在GPOPATH文件夹下了
在终端打开 输入go build test.go
,进而test.exe
即可
我们安装完golang后,我们在windows的cmd命令下就可以直接查看和使用go命令和环境变量了
C:\Users\AB123>go env
set GO111MODULE=
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\AB123\AppData\Local\go-build
set GOENV=C:\Users\AB123\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=E:\goProject\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=E:\goProject
set GOPRIVATE=
set GOPROXY=https://proxy.golang.org,direct
set GOROOT=E:\ruanjian\go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=E:\ruanjian\go\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.20.1
set GCCGO=gccgo
...
从go1.16开始默认值为on,没有的自行设置
GO111MODULE是 go modules 功能的开关,关于go modules本文不详述,这个涉及到go的一种很重要的管理机制,我们可以简单的理解为,在没有go modules机制时,go工程中对于第三方功能包的管理非常复杂,也非常专业,这就导致程序员在进行开发的时候,对于第三方功能包的管理很不方便,所以才有了go modules机制。这个机制的开关是通过GO111MODULE环境变量来配置的。
GO111MODULE=off,无模块支持,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
GO111MODULE=on,模块支持,go命令行会使用modules,而一点也不会去GOPATH目录下查找。
GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:
1.当前目录在GOPATH/src之外且该目录包含go.mod文件,开启模块支持。
2.当前文件在包含go.mod文件的目录下面。
注:
在使用go modules时,GOPATH
是无意义的,不过它还是会把下载的依赖存储在$GOPATH/pkg/mod
中
也会把go install 的结果放在 $GOPATH/bin
中。
当modules 功能启用时,依赖包的存放位置变更为$GOPATH/pkg
允许同一个package多个版本并存,且多个项目可以共享缓存的module
。
命令设置如下:
go env -w GO111MODULE=on
注:如果后面不需要使用,可以再将值设置为off。
从字面意思就能看出,GOPROXY表示的是go的代理设置,之所以有这个环境变量,是因为go这种语言不像C语言,在C语言中,如果我们想要使用别人的第三方代码,一般有两种途径:
而在go语言中,类似于java,可以在编程时,引入第三方代码的库地址,比如git仓库,然后在编译的时候,IDE会自动的拉取第三方库文件到当前工程。
这样做虽然很方便,但是带来了一个问题:网速和限制,
golang默认的GOPROXY是https://goproxy.io,这个是官方的设置,我们可以使用国内的代理,Windows下设置如下:,因为一些限制,我们不能很顺利的使用和下载这些仓库,这样就会导致下载缓慢或者失败,所以这个时候就需要一个代理来实现下载,这个代理就是中间商,可以跨过限制来访问。
golang默认的GOPROXY是https://goproxy.io,这个是官方的设置,我们可以使用国内的代理,Windows下设置如下:
go env -w GOPROXY=https://goproxy.cn,direct
注:其中 -w 表示 写 操作。
(base) zcymac:~ zcy$ go help
Go is a tool for managing Go source code.
Usage:
go <command> [arguments]
The commands are:
bug start a bug report
build compile packages and dependencies
clean remove object files and cached files
doc show documentation for package or symbol
env print Go environment information
fix update packages to use new APIs
fmt gofmt (reformat) package sources
generate generate Go files by processing source
get add dependencies to current module and install them
install compile and install packages and dependencies
list list packages or modules
mod module maintenance
run compile and run Go program
test test packages
tool run specified go tool
version print Go version
vet report likely mistakes in packages
Use "go help " for more information about a command.
Additional help topics:
buildconstraint build constraints
buildmode build modes
c calling between Go and C
cache build and test caching
environment environment variables
filetype file types
go.mod the go.mod file
gopath GOPATH environment variable
gopath-get legacy GOPATH go get
goproxy module proxy protocol
importpath import path syntax
modules modules, module versions, and more
module-get module-aware go get
module-auth module authentication using go.sum
packages package lists and patterns
private configuration for downloading non-public code
testflag testing flags
testfunc testing functions
vcs controlling version control with GOVCS
Use "go help " for more information about that topic.
go help: 查看帮助文档。
go help build
go build: 对源代码和依赖的文件进行打包,生成可执行文件。
go build -o my_first_go_exe entrance_class/demo.go
go install: 编译并安装包或依赖,安装到$GOPATH/bin下。
go install entrance_class/demo.go
go get: 把依赖库添加到当前module中,如果本机之前从未下载过则先下载。
go get github.com/tinylib/msgp
以上命令会在$GOPATH/pkg/mod目录下会生成github.com/tinylib/msgp目录。
go install github.com/tinylib/msgp@latest
以上命令会在$GOPATH/bin下生成msgp可执行文件。
go mod init module_name
初始化一个Go项目。
go mod tidy通过扫描当前项目中的所有代码来添加未被记录的依赖至go.mod文件或从go.mod文件中删除不再被使用的依赖。
go run: 编译并运行程序。
go test: 执行测试代码。
go tool: 执行go自带的工具。go tool pprof对cpu、内存和协程进行监控;go tool trace跟踪协程的执行过程。
go vet: 检查代码中的静态错误。
go fmt: 对代码文件进行格式化,如果用了IDE这个命令就不需要了。
go fmt entrance_class/demo.go
go doc: 查看go标准库或第三方库的帮助文档。
go doc fmt
go doc gonum.org/v1/gonum/stat
go version: 查看go版本号。
go env: 查看go环境信息。