[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 国际」许可协议进行许可。

posted @   芒果和小猫  阅读(249)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu