golang 源码文件
Go源码文件分三个种类:
1)命令源码文件:如果一个源码文件被声明属于main代码包,且该文件代码中包含无参数声明和结果声明的main函数,则它就是命令源码文件。命令源码文件可以通过go run命令直接启动运行。同一个代码包中的所有源码文件,其所属代码包的名称必须一致。如果命令源码文件和库源码文件处于同一个代码包中,那么在该包中就无法正确执行go build和go install命令。换句话说,这些源码文件将无法通过常规方法编译和安装。因此,命令源码文件通常会单独放在一个代码包中。作为程序模块的入口。另外也不建议同一个代码包中有多个命令源码文件。同样会出现go build和go install命令无法编译和安装该代码包。当代码包中有且仅有一个命令源码文件时,在文件所在目录中执行go build 命令,在该目录下生成一个与目录同名的可执行文件;若使用go install命令,则可在当前工作区的bin目录下生成相应的可执行文件。
需要注意的是,只有当前环境变量GOPATH中包含一个工作区的目录路径时,go install命令才会把命令源码文件安装到当前工作区的bin目录下。
否则必须设置环境变量GOBIN,该环境变量的值是一个目录的路径,用于存放所有因Go命令源码文件而生成的可执行文件。
2)库源码文件:声明的包名与他直接所属的代码包(目录)名一致,且库源码文件中无包含无参数声明和无结果声明的main函数,不能被直接运行的源码文件,它仅用于存放程序实体,这些程序实体可以被其他代码使用。
代码包声明的基本规则:
1. 同目录下的源码文件的代码包声明语句要一致。也就是说,它们要同属于一个代码包(package)。这对于所有源码文件都是适用的。
如果目录中有命令源码文件,那么其他种类的源码文件也应该声明属于main包。这也是能够成功构建运行它们的前提。
2. 源码文件声明的代码包的名称可以与其所在的目录的名称不同。在针对代码包进行构建时,生成的结果文件的主名称与其父目录的名称一致。
对于命令源码文件,构建生成可执行文件的主名称会与其父目录的名称相同。
3)测试源码文件
golang 源码文件的更多相关文章
- [Golang学习笔记] 03 库源码文件
库源码文件:不能被直接运行的源码文件,它仅用于存放程序实体,这些程序实体可以被其他代码使用. 代码包声明的基本规则: 1. 同目录下的源码文件的代码包声明语句要一致.也就是说,它们要同属于一个代码包( ...
- golang学习笔记----源码文件
GO源码文件
- Golang源码探索(一) 编译和调试源码(转)
GO可以说是近几年最热门的新兴语言之一了, 一般人看到分布式和大数据就会想到GO,这个系列的文章会通过研究golang的源代码来分析内部的实现原理,和CoreCLR不同的是, golang的源代码已经 ...
- 修改并编译golang源码
最近为了做Hyperledger Fabric国密改造,涉及到了golang源码的改动.特将操作过程整理如下,以供参考: golang的源码安装其实比较简单,只需运行源码包中的脚本src/all.ba ...
- Golang 源码剖析:log 标准库
Golang 源码剖析:log 标准库 原文地址:Golang 源码剖析:log 标准库 日志 输出 2018/09/28 20:03:08 EDDYCJY Blog... 构成 [日期]<空格 ...
- vs2017 asp.net 网站发布问题 (发布路径下含源码文件)
使用vs2010版本,网站发布后会自动将源码发不为.dll程序集,但vs2017需要进行设置,其他版本没有试过. vs2017网站发布: 1. 2. 这里给一个你想用的名字,之后它会出现在你的程序文件 ...
- Golang源码探索(二) 协程的实现原理(转)
Golang最大的特色可以说是协程(goroutine)了, 协程让本来很复杂的异步编程变得简单, 让程序员不再需要面对回调地狱,虽然现在引入了协程的语言越来越多, 但go中的协程仍然是实现的是最彻底 ...
- Golang源码探索(三) GC的实现原理(转)
Golang从1.5开始引入了三色GC, 经过多次改进, 当前的1.9版本的GC停顿时间已经可以做到极短.停顿时间的减少意味着"最大响应时间"的缩短, 这也让go更适合编写网络服务 ...
- 如果是多个 c 代码的源码文件,编译方法如下: $ gcc test1.c test2.c -o main.out $ ./main.out test1.c 与 test2.c 是两个源代码文件。
如果是多个 c 代码的源码文件,编译方法如下: $ gcc test1.c test2.c -o main.out $ ./main.out test1.c 与 test2.c 是两个源代码文件.
随机推荐
- LoadRunner脚本录制常见问题
LoadRunner录制脚本时为什么不弹出IE浏览器?当一台主机上安装多个浏览器时,LoadRunner录制脚本经常遇到不能打开浏览器的情况,可以用下面的方法来解决. 启动浏览器,打开Internet ...
- Linux的IP详解
俗话说:黑发不知勤学早,白首方悔读书迟. ...
- js冒泡排序,快速排序,插入排序
//冒泡排序 function sortBubble(array){ var len=array.length,i,j,tmp; for(i=len-1;i>=1;i--){ ...
- 排序算法-快速排序(Java)
package com.rao.sort; import java.util.Arrays; /** * @author Srao * @className QuickSort * @date 201 ...
- 自用ftp上传脚本
#!/bin/sh backupserver=$1 #localdir=ftp_result_tmp username=$3 password=$4 #remodir='./Log/2018-01-2 ...
- Ql004(母牛的故事)
一,看题目 1,这个虽然我不想说,但是我确实不会,但是我的意思是你可以不会但是不能每次都不会那咋办? 二,看题解 1,你得大概知道这个东西是考啥的(虽然这个东西提前给你说了是d递归),但是考试肯定没人 ...
- LeetCode 691. Stickers to Spell Word
原题链接在这里:https://leetcode.com/problems/stickers-to-spell-word/ 题目: We are given N different types of ...
- 协程,yield,i多路复用,复习
课程回顾: 线程池 队列:同一进程内的队列 先进先出 后进先出 优先级队列 线程池中的回调函数是谁在调用? 线程池中的回调函数是子线程调用的,和父线程没有关系 进程池中的会点函数是父进程调用的,和子进 ...
- ESA2GJK1DH1K基础篇: 移植源码中SmartConfig程序到自己的项目
前言: 说明两个地方 1.点击按钮启动SmartConfig的地方 2.最终跳转的地方 说明 这节说明一下,如何把本人源码里面的SmartConfig程序移植到自己的工程 我要把所有的全部拿出来讲,让 ...
- Socket网络编程——C++实现
本代码可直接使用 根据TCP/IP三次握手,实验时可使用两台电脑,或者打开两个终端模拟通信. 服务器端: #include <iostream> #include <windows. ...