[Golang] GO 语言工作环境的基本概念
1. GOPATH 和 GOROOT(环境变量)#
1. GOROOT#
go 编译器、标准库等安装的地方,所有我们写的代码其实都是文本文件而已,需要编译器等工具将其加工成可执行文件或者库文件才能使用,每种语言都有自己的这样一套“工具”。GOROOT 就是 go 语言的这类“工具”的安装目录。
2. GOPATH#
类似工作区(workspace)的概念,其中里面有三个文件夹
- src:保存自己的源代码,或者第三方依赖的代码,有了 go module 现在一般不用这个了;
- pkg:一般保存一些库文件,在 go module 模式中,也存储下载下来的依赖 module;
- bin:它保存已编译的可执行文件;
有一些老的 go 教程,需要源代码放在 src 目录下,现在这种模式已经不推荐了,因为现在推荐的是 go module 模式,自己写的 module 放在哪里都可以。 之所以老的那种模式被废弃,主要原因是无法很好的做依赖管理。
3. Package#
GO 语言使用 package 来组织源代码的,就像其他的语言一样,在程序内部需要将功能进行划分,任何一个 go 语言程序必须属于一个package,每个 go 文件的开头要写上 package xxx。
package 一般要满足如下三个条件:
- 同一个目录下的同级的所有 .go 文件应该属于一个包;
- 包名建议和目录名同名;
- 一个 go 程序有且只有一个 main 函数作为程序入口,且必须属于 main 包,没有或者有多个 main 包,编译程序会出错。
2. Go Module#
1. GO111MODULE#
Go Module 在 go 1.14 正式发布,不用再把源代码放在 src 文件夹下,比之前更好的依赖管理,也是现在推荐的做法。启用 Go Modules 需要显示设置一个环境变量 GO111MODULE=on。
利用 go mod init 命令在当前目录初始化一个 module,如下。
go mod init example.com/test
2. Module Path#
其中 example.com/test 叫做 moudle path ,一般采用“代码仓库 + module name” 的方式定义。例如 github.com/go-sql-driver/mysq go 会去 github 仓库去获取这个 module。
3. go.mod 和 go.sum#
在 module 主目录下主要会有两个文件和 module 相关:
- go.mod:它用来标记一个 module 和它的依赖库以及依赖库的版本。
- go.sum:记录了所有依赖的 module 的校验信息,为了防止下载的 module 被恶意篡改,主要用于安全校验。
3. Go 的几个命令#
1. go run#
可以快速的运行某个 go 文件,go 在背后会在临时的目录编译并且执行,在程序退出后清除临时目录。
2. go build#
编译 main 包,并在当前或者指定的目录生成可执行文件,非 main 包一般不会生成任何文件。
3. go install#
编译 go 文件,将生成的可执行文件或者库文件放到 GOPATH 下的 bin 或者 pkg 文件夹下。
作者:芒果和小猫
出处:https://www.cnblogs.com/WAoyu/p/16706372.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律