GO 语言运行环境的基础知识

 更新时间:2022年09月19日 08:08:52   作者:芒果和小猫  
这篇文章主要介绍了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 文件夹下。

到此这篇关于GO 语言工作环境的基础知识的文章就介绍到这了,更多相关GO 语言基础知识内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • GO语言实现二维码扫码的示例代码

    GO语言实现二维码扫码的示例代码

    你对二维码扫码的流程有困惑吗,这篇文章就结合笔者自身的开发经验进行分享,让大家熟悉并掌握此功能,感兴趣的小伙伴快跟随小编一起学习一下吧
    2023-06-06
  • Go unsafe 包的使用详解

    Go unsafe 包的使用详解

    这篇文章主要介绍了Go unsafe 包的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • Golang使用pprof检查内存泄漏的全过程

    Golang使用pprof检查内存泄漏的全过程

    pprof 是golang提供的一款分析工具,可以分析CPU,内存的使用情况,本篇文章关注它在分析内存泄漏方面的应用,本文给大家介绍了Golang使用pprof检查内存泄漏的全过程,文中通过代码给大家介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • golang如何使用gomobile进行Android开发

    golang如何使用gomobile进行Android开发

    golang可以开发android,使用golang开发android需要下载安装gomobile,下面这篇文章主要给大家介绍了关于golang如何使用gomobile进行Android开发的相关资料,需要的朋友可以参考下
    2023-01-01
  • Golang map实现原理深入分析

    Golang map实现原理深入分析

    map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用,下面这篇文章主要给大家介绍了关于golang中map使用的几点注意事项,需要的朋友可以参考下
    2023-01-01
  • Go中的错误和异常处理最佳实践方法

    Go中的错误和异常处理最佳实践方法

    这篇文章主要介绍了Go中的错误和异常处理最佳实践方法,文章围绕主题展开详细的内容戒杀,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • Go语言学习教程之声明语法(译)

    Go语言学习教程之声明语法(译)

    Golang 就是类C的语法,下面这篇文章主要给大家介绍了关于Go语言学习教程之声明语法的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-11-11
  • 详解Go语言如何利用上下文进行并发计算

    详解Go语言如何利用上下文进行并发计算

    在Go编程中,上下文(context)是一个非常重要的概念,它包含了与请求相关的信息,本文主要来和大家讨论一下如何在并发计算中使用上下文,感兴趣的可以了解下
    2024-02-02
  • Go与Rust高性能解析JSON实现方法示例

    Go与Rust高性能解析JSON实现方法示例

    这篇文章主要为大家介绍了Go与Rust高性能的解析JSON实现方法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Golang学习笔记(四):array、slice、map

    Golang学习笔记(四):array、slice、map

    这篇文章主要介绍了Golang学习笔记(四):array、slice、map,本文分别讲解了这3个类型的声明&赋值、元素访问、其它操作,需要的朋友可以参考下
    2015-05-05

最新评论