安装go环境

GOROOTGOPATH

GOROOT即go的安装目录,配置成go的安装目录就可以

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YUJy1uaW-1680186331509)(images/image-20221224134928498.png)]

GOPATH即go将来做存储的路径,随便新建一个路径就可以

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LajlpaND-1680186331510)(images/image-20221224135107606.png)]

同时也要把环境变量中的用户变量的GOPATH也改成相应的值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bTEGmMfH-1680186331517)(images/image-20221224135635835.png)]

然后需要在GOPATH目录下创建如下目录,以后会自动用到这些目录,go最原始的是这样,但是现在这三个文件夹用处改变了,但是为了安全起见还是创建这三个文件夹

pkg:编译后生成文件

src :项目的源代码

bin:编译后可执行的文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DQQNqF5C-1680186331518)(images/image-20221224135440302.png)]

安装golang开发环境IDE,选择刚才安装的go编译环境即可,可以写个helloworld测试

go程序必须有一个package main,当发现main包时,从main包中的main函数开始执行。

编译时会声明main包的代码所在目录的目录名作为可执行程序的文件名

package main
import "fmt"
func main() {fmt.Println("hello")
}
go get

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uIICGVYr-1680186331519)(images/image-20221224153246008.png)]

go.mod

go-v1.19.4版本测试,在创建项目时有以下两种情况

第一种情况,选择GOPATH

Index entire GOPATHE:\go1-workpath

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1wX1YX19-1680186331520)(images/image-20230330100559190.png)]

go.modGOPATH/srcgo getGOPATH/src
GOPATH/srcgo getGOPATH/src
go getGOPATH/src

第二种情况,不选择GOPATH(推荐)

go.modE:\go2-workpath

此时不管是否设置了goproxy都看不到GOPATH

由于网络问题不设置goproxy下载不下来

go getGOPATH/pkg/mod

GO111MODULE

GOPATH/src

GO111MODULE是go modules功能的开关

  • GO111MODULE=off,无模块支持,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找

  • GO111MODULE=on,模块支持,go命令行会使用modules,这样就不必须用到GOPATH

  • GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:

    • 当前目录在GOPATH/src之外且该目录包含go.mod文件,开启模块支持。
    • 当前文件在包含go.mod文件的目录下面。

在使用go modules时,GOPATH是无意义的,不过它还是会把下载的依赖存储在$GOPATH/pkg/mod 中
也会把go install 的结果放在 $GOPATH/bin 中。

go module

go getgo mod initgo get
go.modgo mod init <模块名>go mod tidygo mod download$GOPATH/pkg/mod$GOPATH/pkg/sumgo.sumgo mod vendor

可执行文件位置

默认情况下生成路径如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cxg3OtNf-1680186331522)(images/image-20230330123637986.png)]

edit configuration

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hIkC5hWH-1680186331523)(images/image-20230330123929023.png)]

参考链接

田老八的离线笔记

go语言:环境变量GOPROXY和GO111MODULE设置

关于go get 以后下载的包不在src下而在pkg的源头并且不可以import(Goland Modules模块的使用)

golang 系列: go mod 使用

【狂神说】Go语言零基础学习视频通俗易懂