go语言基础之工程管理和工作区介绍
1、工程管理
在实际的开发工作中,直接调用编译器进行编译和链接的场景是少而又少,因为在工程中不会简单到只有一个源代码文件,且源文件之间会有相互的依赖关系。如果这样一个文件一个文件逐步编译,那不亚于一场灾难。 Go语言的设计者作为行业老将,自然不会忽略这一点。早期Go语言使用makefile作为临时方案,到了Go 1发布时引入了强大无比的Go命令行工具。
Go命令行工具的革命性之处在于彻底消除了工程文件的概念,完全用目录结构和包名来推导工程结构和构建顺序。针对只有一个源文件的情况讨论工程管理看起来会比较多余,因为这可以直接用go run和go build搞定。下面我们将用一个更接近现实的虚拟项目来展示Go语言的基本工程管理方法。
2、工作区介绍
Go代码必须放在工作区中。工作区其实就是一个对应于特定工程的目录,它应包含3个子目录:src目录、pkg目录和bin目录。
- src目录:用于以代码包的形式组织并保存Go源码文件。(比如:.go .c .h .s等)
- pkg目录:用于存放经由go install命令构建安装后的代码包(包含Go库源码文件)的“.a”归档文件。
- 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语言基础之工程管理和工作区介绍相关推荐
- C语言基础分享——内存管理3
嗨喽,我是春哥,今天主要介绍段错误以及调试方法,经常遇到段错误,对C语言的理解才会更深. 个人建议收藏此文,这应该是介绍调试方法比较全面的了. 先介绍一下什么是段错误,段错误就意味着你访问了错误的内存 ...
- C语言基础-基本算法
C语言基础-基本算法 在之前的两篇文章中介绍了C语言的入门程序入门程序1,入门程序2,从这篇文章我们就开始介绍C语言基础. 今天来给大家介绍算法的特性和算法的表示. 算法的基本特性 算法包含两方面的内 ...
- C语言基础专题 - 头文件引用
C语言基础专题 - 头文件引用 本文介绍了C语言中头文件的引用方法 阅读本文前推荐阅读C语言预处理 1.
- Go语言基础之网络编程
文章目录 Go语言基础之网络编程 互联网协议介绍 互联网分层模型 物理层 数据链路层 网络层 传输层 应用层 socket编程 socket图解 Go语言实现TCP通信 TCP协议 TCP服务端 TC ...
- java语言基础-刘建-专题视频课程
java语言基础-4096人已学习 课程介绍 这是java语言基础入门课程,适合刚入门的小白. 课程收益 了解java发展历史 掌握开发环境搭建和IDE使用 学习基本语法 讲师 ...
- 面向对象C#初级入门精讲(2)C#语言基础-徐照兴-专题视频课程
面向对象C#初级入门精讲(2)C#语言基础-397人已学习 课程介绍 欢迎加入QQ群538724338提问,这样老师能及时看到并回复 [课程特色] 1.课程设计循序渐进.讲解细致.通俗 ...
- R语言 基础统计学之样本量计算
#R语言 基础统计学之样本量计算 以下介绍基础统计学关于样本量计算的问题,主要解决实际问题中在已知一些统计特征下,计算所必要的样本量,共有三种方式:总体方差已知时,总体方差未知时 ,估计比例为P时的三 ...
- c语言基础学习08_关于内存管理的复习
============================================================================= 对于c语言来讲,内存管理是一个很重要的内容, ...
- 黑马程序员C语言基础(第七天)内存管理
黑马程序员C语言基础(第一天) 黑马程序员C语言基础(第二天) 黑马程序员C语言基础(第三天) 黑马程序员C语言基础(第四天)数据类型 黑马程序员C语言基础(第五天)运算符与表达式.程序流程结构.数组 ...
最新文章
- oracle判断侦听状态,oracle 监听状态为BLOCKED
- zabbix_agent安装(Centos+Ubuntu)
- BZOJ 4898 Luogu P3778 [APIO2017]商旅 (分数规划、最短路)
- for语句与if语句嵌套的简单应用
- 陆奇最新分享:数字化进程加速,创新者如何把握机会?(文末附PPT下载链接)...
- 第二阶段第八天站立会议
- 【一分钟知识】决策树-ID3,C4.5,CART
- MATLAB软件基础
- C语言程序设计(谭浩强)学习总结
- ERP的模块流程/组织架构和其他基础知识
- 三峡大学本科毕业论文答辩PPT模板
- S32K1XX系列单片机 ——(1)开发环境搭建
- java 无法显示打印页面_使用打印机打印网页时出现的脚本错误的办法
- Android之bugly使用
- 五千字!详细解读链家「难而正确的事」
- spark graphx的Triangle三角形计数算法使用示例
- switch()语句中,default,break关键字作用,以及贯穿问题
- 详解RAI I、C++中的智能指针以及一些常见的面试题
- Java核心技术之Comparator和Comparable在排序中的应用
- 二、数码管显示原理及应用实现
热门文章
- Python 关于bytes类方法对数字转换的误区, Json的重要性
- ceph中查看一个rbd的image的真实存储位置
- Oracle树查询及相关函数
- 原生js实现jquery库中选择器的功能(jquery库封装一)
- js理解 call( ) | apply( ) | caller( ) | callee( )
- 软件定义的数据中心已经来临
- Mysql数据导入导出
- Linux 文件系统编程之系统调用和标准I/O库
- c# 写文件注意问题及用例展示
- 《Effective Objective-C 2.0》1、熟悉Objective-C