• [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 文件夹下。

  • 相关阅读:
    【JVM深层系列】「官方技术翻译」《A FIRST LOOK INTO ZGC》初探JVM-ZGC垃圾回收器
    未来3-5年最大的风口是什么?
    高频科技亮相SEMl-e2024第六届深圳国际半导体展,以超纯工艺推动行业发展
    Zeno节点系统中的C++最佳实践
    解决vue3 setup语法糖获取不到子组件的 ref
    【Java|golang】337. 打家劫舍 III---树上最大独立集
    数学建模的六个步骤
    TiniXml C++ 开源代码中的几个概念
    花了一天的时间,地板式扫盲了vue3中所有API盲点
    数据结构之手写HashMap
  • 原文地址:https://www.cnblogs.com/WAoyu/p/16706372.html