目录

go的源码文件:

go的常用命令:

1、通用命令标记

2、go run

2、go build

3、go install

4、go get

5、其他命令


go的源码文件:

go的常用命令:

终端输入 go help,可以得到go的常用命令

The commands are:bug         start a bug reportbuild       compile packages and dependenciesclean       remove object files and cached filesdoc         show documentation for package or symbolenv         print Go environment informationfix         update packages to use new APIsfmt         gofmt (reformat) package sourcesgenerate    generate Go files by processing sourceget         download and install packages and dependenciesinstall     compile and install packages and dependencieslist        list packages or modulesmod         module maintenancerun         compile and run Go programtest        test packagestool        run specified go toolversion     print Go versionvet         report likely mistakes in packages

其中和编译相关的有build,get,install,run这四个。

1、通用命令标记

以下是通用的命令标记,这些命令均适用:

名称

说明

-a

用于强制重新编译所有涉及的Go代码包(包括GO标准库中的代码包),即使已经是最新的了。该标记可以让我们有机会通过改动底层代码包做一些实验

-n

使命令打印执行过程中用到的所有命令,而不去真正执行他们。如果只是想查看或验证命令的执行过程,又不想改变任何东西,使用这个参数最合适。

-race

用于检测并报告指定Go程序中的数据竞争问题。

-v

用于打印命令执行过程中涉及的代码包。这一定包括我们指定的目标代码包,有时还包括该代码包直接或间接依赖的那些代码包。这会让我们看到那些代码包被执行过。

-work

用于打印命令执行时生成和使用的临时工作目录名字,且命令执行完后不删除它。如果不添加此标记,临时工作目录会在命令执行完后被删除。

-x

打印命令执行过程中用到的所有命令,并同时执行他们。

2、go run

go run 是用来运行命令源码文件的命令。该命令不是用来运行所有go的源码文件,需要是一个命令源码文件,或者是多个库源码文件(满足条件:同属于一个main包),不能是测试源码文件,他在执行的时候会检查源码文件的类型,如果不符合上述条件的话,go run 命令会报错并且退出,不会继续执行。

举例:首先创建mytestdemo.go文件

package mainimport f "fmt"func main(){f.Println("hello","world")f.Println("hello","china")}

终端执行go run -n mytestdemo.go

1、创建b001文件夹

2、创建exe文件夹

3、生成.a结尾的归档文件

4、在exe文件夹下生成可执行文件

终端执行得到文件路径:go run -work mytestdemo.go

利用访达,前往该文件路径/var/folders/yt/24f_qg2n6879g2fg85994jf40000gn/T/go-build688712746可以看到生成的b001

文件夹。

所以说go run命令一共生成了两个重要文件,一个是.a结尾的归档文件,一个是可执行文件。

go run命令第二次执行的时候,如果法想该代码包没有发生变化,那么go run 不会再次编译该代码包,直接静态链接

再次终端执行go run -n mytestdemo.go

直接静态链接。

2、go build

go build命令主要用于测试编译,在包的编译过程中,如果有必要会编译相关的包

1、普通包,执行go build不产生任何文件

2、main包,只执行go build命令,会在当前目录下生成一个可执行文件。如果需要在GOPATH/bin目录下生成相应的exe文件,需要执行go install 或者go build -o 路径/可执行文件名。

3、如果某个文件夹下有多个文件,在go build的后面加上文件名,就可以编译其中一个文件。go build命令会默认编译当前目录下的所有go文件

4、go build -o 可执行文件名。默认的package的名(非main包),或者是第一个源文件的文件名(main包)

5、go build会忽略目录下以“_“或者“.”开头的go文件

6、如果代码针对不同的操作系统需要做不同的处理,可以根据不同的操作系统的后缀来命名文件。

demo针对第二点:

此时项目下的路径是这样的:

\

在hello目录下执行go build命令,会在当前目录下生成一个可执行文件。

再次执行go install,如果该项目有一个工作区,会将该执行文件转移到该工作区中的bin文件夹下,如果该项目有多个工作区,会讲该执行文件转移到GOBIN对应目录下的bin文件夹中。此时只有一个工作区。符合第一个情况

go build主要做了哪些呢?

go build主要用于编译制定的源码文件或代码包以及他们的依赖包,但是注意如果用来编译库源码文件,go build执行完是不产生任何结果的,这种情况下,go build只能检查库源码问文件的有效性,只做检查性编译,而不会输出任何结果文件。

go build编译命令源码文件,会在该命令的执行目录中生成一个可执行文件

go build后面不追加目录路径的话,就把当前目录作为代码包进行编译,go build命令后面如果跟了代码包的路径作为参数,那么该代码包及其依赖都会被编译。

执行过程和go run类似

3、go install

go install是用来编译并安装代码包或者源码文件的

go install分为两个步骤:1、生成结果文件(可执行文件或者是.a结尾的包)

2、会把编译好的结果移到GOPATH/pkg(.a结尾的包)或者GOPATH/bin(可执行文件)

实际上,go install命令只比go build命令多做了一件事,就是安装编译后的结果文件到制定目录

安装代码包会在当前工作区的pkg的平台相关目录下生成归档文件(.a结尾的包)

安装命令源码文件会在当前工作区的bin目录下(如果GOPATH下有多个工作区,就会放到GOBIN目录下)生成可执行文件

go install命令后面不追加参数,会把当前目录作为代码包并安装,这和go build一样的

go install命令后面如果跟了代码包导入路径作为参数,那么该代码包及其依赖都会安装

go install命令后面如果跟了命令源码源码文件以及库源码文件作为参数的话,只有这些文件会被编译并安装

4、go get

go get命令用于从远程代码仓库上下载并安装代码包,注意,go get命令会把当前的代码包下载到$GOPATH中的第一个工作区的src目录中,并安装

go get命中有一个很指的称道的功能--智能下载,在使用它检出或更新代码包之后,它会寻找与本地已安装go语言的版本号相对应的标签(tag)或分支(branch),比如,本机安装的go语言的版本是1.x,那么go get 命令会在该代码包的远程仓库中寻找名为“go1”的标签或者分支,如果找到指定的标签或者分支,则将本地代码包的版本切换到此标签或者分支,如果没有找到指定的标签或者分支,则将本地代码包的版本切换到主干的最新版本

go get常用的一些标记

标记名称 描述
-d 让命令程序只执行下载操作,不执行安装
-f 仅在使用-u标记的时候才有效,该标记会让命令程序忽略掉已下载代码包的导入路径的检查,如果下载并安装的代码包所属的项目是你从别人那fork过来的,这点尤为重要
-fix 让命令程序在下载代码包后执行修正动作,而后在进行编译和安装
-insecure 允许命令程序使用非安全的scheme(如http)去下载指定的代码包,如果用的代码草枯没有https的支持,可以添加此标记,在确定安全的情况使用
-t 让命令程序同时下载并安装指定的代码包中的测试源码文件中依赖的代码包
-u 让命令程序利用网络来更新已有代码包及其依赖包,默认情况下,该命令只会从网络上下载本地不存在的代码包,而不会更新已有的代码包
-x 可以看到go get命令的执行过程

终端执行 go get -x github.com/go-errors/errors

执行过程如下:

1、在src目录下生成一个github.com的文件夹,其中存放了github中的源码文件

2、在src同级目录下存在一个pkg,go get命令最终会把库源码文件比编译成归档文件安装在pkg目录下。

5、其他命令

go clean:用来移除当前源码包里面编译生成的文件。

go fmt :用来格式化写好的代码文件

go test:会自动读取源码目录下面名为*_test.go的文件,生成并运行测试用的可执行文件。

go doc:强大的文档工具,查看相应package的文档

1、go doc net/http  http包,可以查看包中的函数以及常量等

2、go doc fmt Printf    查看某一个包里面的函数:查看fmt包下的Printf函数

3、go doc -src fmt Printf   查看相应的代码

go fix :用来修复以前老版本的代码到新版本

go version:查看go当前的版本

go env:查看go当前的环境变量

go list:查看当前全部安装的package

Go基础-go的源码文件以及常用命令相关推荐

  1. Go 学习笔记(2)— 安装目录、工作区、源码文件和标准命令

    GOROOT: Go 语言安装根目录的路径,也就是 GO 语言的安装路径. GOPATH: 若干工作区目录的路径.是我们自己定义的工作空间.在 Go Module 模式之前非常重要,现在基本上用来存放 ...

  2. U-Boot 之三 U-Boot 源码文件解析及移植过程详解

      在之前的博文 Linux 之八 完整嵌入式 Linux 环境介绍及搭建说明 中我们说了要一步步搭建整个嵌入式 Linux 运行环境.我所使用的硬件平台及整个要搭建的嵌入式 Linux 环境见博文 ...

  3. U-Boot 之零 源码文件、启动阶段(TPL、SPL)、FALCON、设备树

      最近,工作重心要从裸机开发转移到嵌入式 Linux 系统开发,在之前的博文 Linux 之八 完整嵌入式 Linux 环境.(交叉)编译工具链.CPU 体系架构.嵌入式系统构建工具 中详细介绍了嵌 ...

  4. IntelliJ IDEA for Mac 如何配置项目模块的源代码根目录_源码文件的根目录

    按下组合键 Command + ; 打开[项目结构]配置窗口:然后选择左侧菜单栏的[Modules]:然后在右侧的模块列表中,选择你要配置的模块:接着选择右侧界面中的[Sources]标签. 首先添加 ...

  5. lsof-文件监控常用命令

    lsof-文件监控常用命令 lsof命令 主要选项参数释义 安装lsof命令 实例 `losf -c 进程名`查看某个进程名称当前打开的文件 `lsof -p PID`查看某个进程id当前打开的文件 ...

  6. yum源仓库安装与常用命令

    yum源仓库安装与常用命令 yum 配置本地yum源仓库 尝试安装程序 yum常用命令 yum Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedH ...

  7. docker基础用法及镜像和容器的常用命令大全

    1. docker 体系架构 Docker 采用了 C / S 架构,包括客户端和服务端.Docker 守护进程作为服务端接受来自客户端的请求,并处理这些请求(创建.运行.分发容器).客户端和服务端既 ...

  8. opencv学习笔记—— opencv3 源码文件夹内容

    OpenCV 3 的源代码文件夹: 3rdparty/: 包含第三方库,如用视频解码用的 ffmpeg.jpg.png.tiff 等图片的解码库. apps/: 包含进行 Haar 分类器训练的工具, ...

  9. Android源码文件夹结构

    Android 2.2 |-- Makefile |-- bionic               (bionic C库) |-- bootable            (启动引导相关代码) |-- ...

  10. C#MUD英雄大作战二、乔峰篇(副源码文件连接)

    目录 开发环境: 编码 源码地址: 开发环境: 系统环境:Win10 开发工具:VS2019 语言:C# 项目:控制台应用(.NET Framework) 编码 英雄类:(更换namespace即可) ...

最新文章

  1. 投影参数_智能投影仪参数如何去看,其实很简单
  2. 第三十四课.模糊神经网络
  3. 类的sizeof大小和C语言中各种数据类型的长度
  4. AndroidStudio自动补完包的快捷键
  5. [系统底层] x86和x64下ssdt的差异
  6. Flutter 36: 图解自定义 View 之 Canvas (三)
  7. 【ES6(2015)】Function函数
  8. 【OpenCV】OpenCV实战从入门到精通之 -- 指针访问、迭代器iterator、动态地址计算配合at元素
  9. ROS 教程之 network:多台计算机之间网络通信(2)
  10. Mockplus黑色星期五和网络星期一特惠
  11. C#- XPath教程
  12. 极客大学架构师训练营 网络通信协议 非阻塞网络I/O NIO 数据库架构原理 第16课 听课总结
  13. Excel 数据透视表教程大全之 01 什么是数据透视表 如何创建数据透视表
  14. Android开发屏幕适配全攻略
  15. 程序员书籍PDF大收集
  16. 2021年中国化学纤维行业发展现状分析,循环再利用或为产品未来发展方向「图」
  17. webrtc在服务器端通信协议,一种基于WebRTC通信的Web协议WebTorrent
  18. 个人电脑虚拟环境的搭建(VMware Workstation Pro)
  19. 【随手记】PHP获取png图片主色系各色系色块RGB值
  20. python最基本语句,实例1温度转换

热门文章

  1. 吴恩达教授机器学习课程笔记【八】- Part 8 感知器和大间隔分类器(在线学习感知器算法错分类次数上界及其证明)
  2. 图像语义分割(9)-DeepLabV3: 再次思考用于图像语义分割的空洞卷积
  3. 使用国内源来安装pytorch(速度很快)
  4. ROS2 Galactic teb_local_planner
  5. softmax和cross_entropy
  6. FreeMarker(七)Html转义
  7. VS2015编译VS2013工程文件出错
  8. jquery 输入框,单选按钮,下拉列表和复选框的使用
  9. C#中实现拖拽功能,补全中
  10. ASP.NET 對cookies的操作