Go语言3个环境变量:

  • GOROOT:GO语言按照根路径,也就是GO语言的安装路径。
  • GOPATH:若干工作区目录的路径。是我自己定义的工作空间。
  • GOBIN:GO程序生成的可执行文件(executable file)的路径。

工作区和GOPATH:

代码包导入路径:
Import “github.com/labstack/echo”
在工作区中,一个代码包的导入路径实际上就是从src子目录,到该包的实际存储位置的相对路径。

某个工作区的src子目录下的源码文件在安装后会被放置到当前工作区的pkg子目录下对应的目录中,或者被直接放置到该工作区的bin子目录中。

面试题:设置GOPATH有什么意义?

答:GOPATH是Go语言的工作目录,是一个目录的路径,每一个路径代码一个Go语言工作区。
利用这些工作区放置Go 语言的源码文件,安装后的归档文件和可执行文件。
GO语言在生命周期的所有操作(编码,依赖管理,构建,测试,安装等)基本都围绕GOPATH和工作区进行的。
意义在于代码结构的分层。
• 源码文件放在工作区的src目录
• 归档文件放在工作区的pkg目录
• 可执行文件放在工作区的bin目录
• 归档文件的相对目录与 pkg 目录之间还有一级目录,叫做平台相关目录。


构建和安装 Go 程序的过程:
构建命令:go build
构建->库源码文件->临时目录
意义在于检查和验证
构建->命令源码文件->源码文件所在目录

安装命令:go install
安装->构建->链接->搬运到指定目录
(如果安装是库源码源文件,那么就在pkg目录的某个子目录中)
(如果安装是命令源码文件,那么就在bin目录的某个子目录中,或GOBIN)


思考题:

1. GO语言在多个工作区中查找依赖包的时候是以怎样的顺序进行的?
三个纬度延伸总结回答:

总执行顺序的角度
引入的包 -> 当前包的变量常量 -> init()[多个同一包则按照顺序执行] -> main函数
依赖包执行顺序
被依赖的总是优先执行初始化,一个包只会被初始化一次。 a引入b,b引入c,则执行顺序c -> b -> a
单个包执行顺序的角度
总的前提:按照包中源文件名的字典顺序来排序执行。
当前包排序后的变量常量 -> 排序后的init()
2. 如果在多个工作区中都存在导入路径相同的代码包会产生冲突吗?
不冲突,因为按顺序找到所需要的包就不往后找了

本学习笔记是仅为了总结自己学到的Go语言核心知识,方便以后回忆,文中部分内容摘录自极客时间的《Go语言核心36讲》专栏,如有侵权,请联系我删除。

最新文章

  1. 20个Mac用户必须掌握的触摸手势
  2. [问题解决]《GPU高性能编程CUDA实战》中第4章Julia实例“显示器驱动已停止响应,并且已恢复”问题的解决方法
  3. node.js 抓取网页数据
  4. 编译C#代码
  5. C和C++的头文件总结
  6. java.lang.String
  7. 【Nginx】配置Nginx的负载均衡
  8. PHP-----数据类型,运算符
  9. C#编程总结(四)多线程应用(进度条的编程问题)——转自http://www.cnblogs.com/yank/p/3232955.html
  10. autowire异常的三个情况
  11. java整数类型
  12. C之文件读写
  13. HW4.10
  14. wind7下搭建ftp服务器
  15. breakpad是Google开源的一套跨平台工具
  16. SkylineGlobe7.0.1版本 支持SQLite(*.sqlite;*.db)数据库
  17. 边学边做,简单的 GraphQL 实例
  18. Requests 源码阅读笔记
  19. 第3章 文件I/O(3)_内核数据结构、原子操作
  20. 4827: [Hnoi2017]礼物

热门文章

  1. Mysql学习---使用Python执行存储过程
  2. MVC与WebApi中的异常过滤器
  3. iOS亮屏解锁命令【iOS自动化测试】--使用ssh
  4. 利用Fiddler2和Proxifier分析你用的中国菜刀是否带有后门
  5. js实现点击按钮显示某个区域 然后点击页面中任意其他位置,隐藏该区域
  6. Java虚拟机9:垃圾收集(GC)-4(垃圾收集器)
  7. python中的Lock
  8. SHA1WithRSA
  9. 安装LAMP PHP的./configure 參数,未出现MYSQ
  10. flask开启debug模式的两种方法、加载配置文件的两种方法、URL传参的四种方法