go在安装时选择好安装目录完成安装之后,还需要设置两个环境变量:GOROOT
、GOPATH
GOROOT即go的安装目录,配置成go的安装目录就可以
GOPATH即go将来做存储的路径,随便新建一个路径就可以
同时也要把环境变量中的用户变量的GOPATH也改成相应的值
然后需要在GOPATH目录下创建如下目录,以后会自动用到这些目录,go最原始的是这样,但是现在这三个文件夹用处改变了,但是为了安全起见还是创建这三个文件夹
pkg:编译后生成文件
src :项目的源代码
bin:编译后可执行的文件
安装golang开发环境IDE,选择刚才安装的go编译环境即可,可以写个helloworld测试
go程序必须有一个package main,当发现main包时,从main包中的main函数开始执行。
编译时会声明main包的代码所在目录的目录名作为可执行程序的文件名
package main
import "fmt"
func main() {
fmt.Println("hello")
}
配置go get
的代理镜像
go-v1.19.4版本测试,在创建项目时有以下两种情况
golang中新建项目时如果选择GOPATH,并勾选Index entire GOPATH
,将项目放到非GOPATH路径下(这里我放在E:\go1-workpath
)
此时项目路径下没有go.mod
文件(不会自动生成go.mod),这时项目是可以看到GOPATH/src
的,并且通过go get
安装的第三方包也是放在GOPATH/src
下面,项目中的go程序可以导入这里的包。
如果设置了go modules的代理GOPROXY,就看不到GOPATH/src
了,通过go get
安装的第三方包也是放在GOPATH/src
下面,但是此时go文件也不能import包。
这种方法的应用背景:直接go get
下载不下来,就可以先设置proxy,这样会将第三方包下载到GOPATH/src
下面,然后在取消goproxy,这样项目中的文件就可以导入包了。
golang中新建项目时如果没有选择GOPATH,则会在项目目录下自动生成一个go.mod
文件,将项目放到非GOPATH路径下(这里我放在E:\go2-workpath
)
此时不管是否设置了goproxy都看不到GOPATH
由于网络问题不设置goproxy下载不下来
设置了goproxy后,go get
会将第三方包下载到GOPATH/pkg/mod
目录下,并且此时可以直接导入包
自己理解的就是现在高版本的go如果项目路径下有go.mod,就开启了GO111MODULE,这样就不必须将项目路径放在
GOPATH/src
下了
GO111MODULE是go modules功能的开关
GO111MODULE=off,无模块支持,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找
GO111MODULE=on,模块支持,go命令行会使用modules,这样就不必须用到GOPATH
GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:
在使用go modules时,GOPATH是无意义的,不过它还是会把下载的依赖存储在$GOPATH/pkg/mod 中
也会把go install 的结果放在 $GOPATH/bin 中。
如果一个项目依赖多个第三方包可以挨个
go get
,但是这样比较慢了,可以用go的第三方包管理器go module来做,这也是现在高版本的go的做法。当然在
go mod init
之后,也可以用go get
下载第三方包,会自动更新go.mod文件
初始化,新建项目时golang不选择GOPATH会自动创建go.mod
,或者手动创建go mod init <模块名>
更新依赖go mod tidy
这个命令将会扫描所有我们 import 到的包,并生成对应的记录到 gomod 文件里。
下载依赖go mod download
⽬前所有模块版本数据均缓存在 $GOPATH/pkg/mod
和 $GOPATH/pkg/sum
下,同时会在项⽬根⽬录下⽣成 go.sum
⽂件, 该⽂件是依赖的详细依赖。
导⼊依赖 go mod vendor
我们的依赖下载完成后是存储了 $GOPATH ⽬录下的,如果有特殊需要,需要将 GOPATH 下的依赖转移⾄该项⽬根 ⽬录下的 vendor(⾃动新建) ⽂件夹下,可以使⽤该命令。
默认情况下生成路径如下
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cxg3OtNf-1680186331522)(images/image-20230330123637986.png)]
可以通过golang界面中右上角edit configuration
设置将可执行文件生成到当前目录
参考链接
田老八的离线笔记
go语言:环境变量GOPROXY和GO111MODULE设置
关于go get 以后下载的包不在src下而在pkg的源头并且不可以import(Goland Modules模块的使用)
golang 系列: go mod 使用
【狂神说】Go语言零基础学习视频通俗易懂