初识Go语言1【Windows 上安装 Go 环境,以及GO111MODULE、GOPROXY环境配置、Go命令介绍】

文章目录

    • Go安装包下载
    • 修改环境变量
    • 环境变量GOPROXY和GO111MODULE设置
      • GO111MODULE
      • GOPROXY
    • Go命令介绍


Go安装包下载

https://studygolang.com/dl
初识Go语言1【Windows 上安装 Go 环境,以及GO111MODULE、GOPROXY环境配置、Go命令介绍】_第1张图片
下载之后傻瓜式安装,一路next即可,也可以修改文件安装路径

修改环境变量

如果是默认安装C盘不用进行下面操作

1.在系统变量中添加GOROOT
初识Go语言1【Windows 上安装 Go 环境,以及GO111MODULE、GOPROXY环境配置、Go命令介绍】_第2张图片
2.添加系统变量中的Path
初识Go语言1【Windows 上安装 Go 环境,以及GO111MODULE、GOPROXY环境配置、Go命令介绍】_第3张图片

3.GOPATH:就是你以后go项目存放的路径,即工作目录
初识Go语言1【Windows 上安装 Go 环境,以及GO111MODULE、GOPROXY环境配置、Go命令介绍】_第4张图片

4.在$GOPATH目录下新建3个子目录,src,pkg,bin

  • 下载的第三方依赖存储在$PATH/pkg/mod下
  • go install 生成的可执行文件存储在$GOPATH/bin下
  • 依赖包的查找顺序
    • 1.工作目录
    • 2.$GOPATH/pkg/mod
    • 3.$GOPATH/src

5.测试
记得go项目文件要保存在自己设置的GOPATH路径下。其实现在不推荐项目文件放在GPOPATH文件夹下了
初识Go语言1【Windows 上安装 Go 环境,以及GO111MODULE、GOPROXY环境配置、Go命令介绍】_第5张图片
在终端打开 输入go build test.go,进而test.exe即可

环境变量GOPROXY和GO111MODULE设置

我们安装完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
...

GO111MODULE

从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

从字面意思就能看出,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 表示 写 操作。

Go命令介绍

(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环境信息。

你可能感兴趣的:(#,Go语言,windows,golang,linux)