初识Go语言1【Windows 上安装 Go 环境,以及GO111MODULE、GOPROXY环境配置、Go命令介绍】
作者:mmseoamin日期:2023-12-21

文章目录

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