前言
Go语言环境配置和代码存放组织方式相比与其他语言不太一样,比较迷,虽然每次都稀里糊涂地配置好了,但还是感觉云里雾里的,所以想写一遍文章来系统地总结一下。因为大部分公司的开发环境都是Linux,所以这里也以Linux为例
安装
安装这一块有两个选择,一个是下载源码包然后自己编译,一个是下载已经编译好的文件,这里我们选择后者
我用的下载网址是:https://studygolang.com/dl
解压文件到/usr/local文件夹
src目录存放go语言源码
bin目录存放go可执行程序
安装步骤就到此结束了
环境配置
配置环境变量
vim ~/.bashrc
GOROOT:Go语言安装根目录
GOPATH:Go语言开发路径
将bin目录添加到path之后,剩下的环境变量就可以直接用go env来配置了
配置GO111MODULE开启与国内代理
在GOPATH路径下新建3个文件夹bin、pkg、src
环境配置到这里就完成了
Go代码组织方式
在进行Go语言开发的时候,我们的代码总是会保存在$GOPATH/src
目录下在工程经过go build、go install或go get等指令后,会将下载的第三方包源代码文件放在$GOPATH/src
目录下, 产生的二进制可执行文件放在 $GOPATH/bin
目录下,生成的中间缓存文件会被保存在 $GOPATH/pkg
下
个人代码
Go语言中也是通过包来组织代码文件,我们可以引用别人的包也可以发布自己的包,但是为了防止不同包的项目名冲突,我们通常使用顶级域名来作为包名的前缀,这样就不担心项目名冲突的问题了。因为不是每个个人开发者都拥有自己的顶级域名,所以目前流行的方式是使用个人的github用户名来区分不同的包
企业代码![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/fc9199eeb6cf02b891a6484bff23dd00.png)
几点提示
- Go可执行程序可以分解成一个个包,其中必须存在main包,main包里必须包含main函数,程序执行本质上就是运行main包里的main函数,main函数结束程序就结束,main函数所在的文件名是随意的。
- 一个目录下的同级文件归属一个包。 包名可以与其目录不同名。包名为 main 的包为应用程序的入口包,其他包不能使用,一个第三方包里的可以没有main函数,就算有你也导入不了。
- 同一个目录下的go文件代码里想调用另一个go文件里定义的函数,那么这两个文件的package必须一样。
- import导入时,会从GO的安装目录(也就是GOROOT环境变量设置的目录)和GOPATH环境变量设置的目录中,检索 src/package 来导入包。如果不存在,则导入失败
- Go语言中只关注文件目录名和包名(package),import的时候指定的是包文件所在的目录名,而使用的时候用的是包名
创建一个项目demo
使用GO MOUDLE来管理包
新建项目文件夹go_demo,进入文件夹,输入go mod init go_demo
输入code .
使用vscode写代码
终端里输入go mod tidy 自动下载所需依赖
可以看到,go.mod文件发生了变化
编译运行