1、工程管理

在实际的开发工作中,直接调用编译器进行编译和链接的场景是少而又少,因为在工程中不会简单到只有一个源代码文件,且源文件之间会有相互的依赖关系。如果这样一个文件一个文件逐步编译,那不亚于一场灾难。 Go语言的设计者作为行业老将,自然不会忽略这一点。早期Go语言使用makefile作为临时方案,到了Go 1发布时引入了强大无比的Go命令行工具。

Go命令行工具的革命性之处在于彻底消除了工程文件的概念,完全用目录结构和包名来推导工程结构和构建顺序。针对只有一个源文件的情况讨论工程管理看起来会比较多余,因为这可以直接用go run和go build搞定。下面我们将用一个更接近现实的虚拟项目来展示Go语言的基本工程管理方法。

2、工作区介绍

Go代码必须放在工作区中。工作区其实就是一个对应于特定工程的目录,它应包含3个子目录:src目录、pkg目录和bin目录。

  1. src目录:用于以代码包的形式组织并保存Go源码文件。(比如:.go .c .h .s等)
  2. pkg目录:用于存放经由go install命令构建安装后的代码包(包含Go库源码文件)的“.a”归档文件。
  3. bin目录:与pkg目录类似,在通过go install命令完成安装后,保存由Go命令源码文件生成的可执行文件。

目录src用于包含所有的源代码,是Go命令行工具一个强制的规则,而pkg和bin则无需手动创建,如果必要Go命令行工具在构建过程中会自动创建这些目录。

需要特别注意的是,只有当环境变量GOPATH中只包含一个工作区的目录路径时,go install命令才会把命令源码安装到当前工作区的bin目录下。若环境变量GOPATH中包含多个工作区的目录路径,像这样执行go install命令就会失效,此时必须设置环境变量GOBIN。

转载于:https://www.cnblogs.com/nulige/p/10233725.html

go语言基础之工程管理和工作区介绍相关推荐

  1. C语言基础分享——内存管理3

    嗨喽,我是春哥,今天主要介绍段错误以及调试方法,经常遇到段错误,对C语言的理解才会更深. 个人建议收藏此文,这应该是介绍调试方法比较全面的了. 先介绍一下什么是段错误,段错误就意味着你访问了错误的内存 ...

  2. C语言基础-基本算法

    C语言基础-基本算法 在之前的两篇文章中介绍了C语言的入门程序入门程序1,入门程序2,从这篇文章我们就开始介绍C语言基础. 今天来给大家介绍算法的特性和算法的表示. 算法的基本特性 算法包含两方面的内 ...

  3. C语言基础专题 - 头文件引用

    C语言基础专题 - 头文件引用 本文介绍了C语言中头文件的引用方法 阅读本文前推荐阅读C语言预处理 1.

  4. Go语言基础之网络编程

    文章目录 Go语言基础之网络编程 互联网协议介绍 互联网分层模型 物理层 数据链路层 网络层 传输层 应用层 socket编程 socket图解 Go语言实现TCP通信 TCP协议 TCP服务端 TC ...

  5. java语言基础-刘建-专题视频课程

    java语言基础-4096人已学习 课程介绍         这是java语言基础入门课程,适合刚入门的小白. 课程收益     了解java发展历史 掌握开发环境搭建和IDE使用 学习基本语法 讲师 ...

  6. 面向对象C#初级入门精讲(2)C#语言基础-徐照兴-专题视频课程

    面向对象C#初级入门精讲(2)C#语言基础-397人已学习 课程介绍         欢迎加入QQ群538724338提问,这样老师能及时看到并回复 [课程特色] 1.课程设计循序渐进.讲解细致.通俗 ...

  7. R语言 基础统计学之样本量计算

    #R语言 基础统计学之样本量计算 以下介绍基础统计学关于样本量计算的问题,主要解决实际问题中在已知一些统计特征下,计算所必要的样本量,共有三种方式:总体方差已知时,总体方差未知时 ,估计比例为P时的三 ...

  8. c语言基础学习08_关于内存管理的复习

    ============================================================================= 对于c语言来讲,内存管理是一个很重要的内容, ...

  9. 黑马程序员C语言基础(第七天)内存管理

    黑马程序员C语言基础(第一天) 黑马程序员C语言基础(第二天) 黑马程序员C语言基础(第三天) 黑马程序员C语言基础(第四天)数据类型 黑马程序员C语言基础(第五天)运算符与表达式.程序流程结构.数组 ...

最新文章

  1. oracle判断侦听状态,oracle 监听状态为BLOCKED
  2. zabbix_agent安装(Centos+Ubuntu)
  3. BZOJ 4898 Luogu P3778 [APIO2017]商旅 (分数规划、最短路)
  4. for语句与if语句嵌套的简单应用
  5. 陆奇最新分享:数字化进程加速,创新者如何把握机会?(文末附PPT下载链接)...
  6. 第二阶段第八天站立会议
  7. 【一分钟知识】决策树-ID3,C4.5,CART
  8. MATLAB软件基础
  9. C语言程序设计(谭浩强)学习总结
  10. ERP的模块流程/组织架构和其他基础知识
  11. 三峡大学本科毕业论文答辩PPT模板
  12. S32K1XX系列单片机 ——(1)开发环境搭建
  13. java 无法显示打印页面_使用打印机打印网页时出现的脚本错误的办法
  14. Android之bugly使用
  15. 五千字!详细解读链家「难而正确的事」
  16. spark graphx的Triangle三角形计数算法使用示例
  17. switch()语句中,default,break关键字作用,以及贯穿问题
  18. 详解RAI I、C++中的智能指针以及一些常见的面试题
  19. Java核心技术之Comparator和Comparable在排序中的应用
  20. 二、数码管显示原理及应用实现

热门文章

  1. Python 关于bytes类方法对数字转换的误区, Json的重要性
  2. ceph中查看一个rbd的image的真实存储位置
  3. Oracle树查询及相关函数
  4. 原生js实现jquery库中选择器的功能(jquery库封装一)
  5. js理解 call( ) | apply( ) | caller( ) | callee( )
  6. 软件定义的数据中心已经来临
  7. Mysql数据导入导出
  8. Linux 文件系统编程之系统调用和标准I/O库
  9. c# 写文件注意问题及用例展示
  10. 《Effective Objective-C 2.0》1、熟悉Objective-C