条件编译:

标签编译:( build tag )

// +build { GOOS }, { GOOS }, { !GOOS }

// +build (linux AND 386) OR (darwin AND (NOT cgo))

以 + 开始,例如 // +build

支持 GOOS 与 GOARCH 并可以具有多个值,用 , 分割, 例如: // +build linux, darwin, freebsd

支持 不等条件 ! , 例如:\ +build !windows 即,不在windows环境下时,均可编译此文件。

支持 与非 逻辑, AND OR NOT 。

条件编译需要前后空一行,否则无法识别。

文件后缀:

xxx_{ GOOS }.go xxx_{ GOOS }_{ GOARCH }.go

支持 GOOS ,例如: curl_windows.go

支持 GOARCH, 例如: curl_386.go

支持 上述两种叠加,但不可调换顺序 xxx_{ GOOS }_{ GOARCH }.go ,例如: curl_windows_amd64.go

如何选择:

这两者可以叠加使用,但注意不要出现冗余,如:curl_windows.go 里面写 // +build windows 则重复了。

如果编译的文件是一一对应关系的话,使用文件后缀更简单些,如对每个 GOOS 生成一个文件。

如果有复杂条件的话,可以使用标签编译方式。如:

curl_windows.go 对应 windows 平台。

curl_others.go 里面写 \ +build !windows 对应 非windows 平台。

交叉编译:

Golang 1.5 ( 以上 ) 修改 GOOS GOARCH 后,即可。如:

export GOOS=windows

go install curl.go

GOOS 与 GOARCH 支持的参数:

GOOS

编译参数:

go get

-u - 强制使用网络去更新包和它的依赖包。当不加 -u 时,如果本地以存在,则不再从远程加载( 更新 ) 。

-d - 只下载不安装。

-v - 与 go build 参数含义相同。

-x - 与 go build 参数含义相同。

特性:

使用 go get 时,会自动切换到与当前 go version 一样的分支,如:当前 go version 是 1.5 则会自动查询 tags/go1 or branch/go1

支持的版本控制系统:

Mercurial

Git

Subversion

Bazaar

go build

不包含 main() 的话,执行后,不会产生任何文件。如果想要生成 package 或 可执行文件 需要使用 go install 。

包含 main() 的话,执行后,会在当前目录生成 package 或 可执行性文件

以 _ . 开头的文件会被忽略,例如:_xxx.go 或者 .xxx.go

支持上面描述的 条件编译 。

常用参数:

-o - 指定编译的文件名,可以带上路径。如: go build -o aaa.exe

-a - 强行对所有涉及到的代码包(包含标准库中的代码包)进行重新构建,即使它们已经是最新的了。

-n - 打印编译期间所用到的其它命令,但是并不真正执行它们。

-v - 打印出那些被编译的代码包的名字。

-x - 打印编译期间所用到的其它命令。

-work - 打印出编译时生成的临时工作目录的路径,并在编译结束时保留它。在默认情况下,编译结束时会删除该目录。

go install

支持绝大多数的 go builid 参数,在 go build 执行的基础上,即:如果定义了 GOBIN 的话,会在此目录下生成可执行文件。( 前提是需要包含 main() 方法 ), 而 go build 只会在当前文件夹下生成 可执行性文件 。

godoc

-http=: 指定端口。

go list

-json - 列出当前包的信息,包括依赖等, json 的基本字段含义:

go list -json 1

go list -json 2

-f - 查看某个具体的字段,例如: go list -f {{.Gofiles}} ,其中{{}} 属于 text/template 语法。

go run

包含了两个动作,编译 + 运行。

与 go build | go install 一样,支持它们的参数。

go test

-c - 生成用于运行测试的可执行文件,但不执行它。

-i - 安装/重新安装运行测试所需的依赖包但不编译和运行测试代码。

其它命令:

go version 查看go当前的版本

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

有用的参数:

-i - 安装相应的包。编译 +go install

-p n - 指定可以并行可运行的编译数目,默认是CPU数目。

-race - 开启编译的时候自动检测数据竞争的情况,目前只支持64位的机器。

参考:

golang不编译.html,Golang 编译 条件编译相关推荐

  1. golang不编译.html,golang之条件编译

    Go语言能够经过go/build包里定义的tags和命名约定来让Go的包能够运行不一样的代码.html 标签编译 在源代码里添加标注,一般称之为编译标签(build tag).编译标签采用靠近源代码文 ...

  2. golang源码分析:编译过程词法解析的流程

    golang编译 由于golang作为静态语言,当使用go build时就会生成对应的编译完成之后的文件,那这个编译过程大致会做什么事情呢,在golang中的编译大致有哪些流程. golang示例代码 ...

  3. 【Golang | gRPC】使用protoc编译.proto文件

    环境: Golang: go1.18.2 windows/amd64 protoc:libprotoc 3.21.1 1. 安装protoc 使用protoc编译.proto文件,首先需要正确安装pr ...

  4. golang直接调用ffmpeg预编译类库(windows)已更新

    MinGW介绍 MINGW(Minimalist GNU on Windows)是一个可以在windows下编译Linux程序的仿真linux编译环境,他提供了linux下的C.C++头文件.系统库和 ...

  5. golang python rpc_grpc - 使用 golang 带你从头撸一套 RPC 服务(一)

    gRPC 是一个高性能.开源和通用的 RPC 框架,面向移动和 HTTP/2 设计,带来诸如双向流.流控.头部压缩.单 TCP 连接上的多复用请求等特.这些特性使得其在移动设备上表现更好,更省电和节省 ...

  6. Golang入门教程(二)Ubuntu16.04下安装golang(实例:Golang 定时任务管理器)

    通过两种方式安装 一.通过apt-get安装 1.安装 sudo apt-get install golang 2.设置GOPATH变量 GOPATH是扩展库的目录,Go先搜索标准库目录,然后搜索GO ...

  7. netcore 编译 html dll,ASP.NET Core Razor 视图预编译、动态编译

    0x01 前言 ASP.NET Core在默认发布情况下,会启动预编译将试图编译成xx.Views.dll,也许在视图中打算修改一处很细小的地方我们需要再重新编译视图进行发布.下面我将从 ASP.NE ...

  8. Golang指南:顶级Golang框架、IDE和工具列表

    Golang指南:顶级Golang框架.IDE和工具列表 https://www.itcodemonkey.com/article/1053.html 2017-10-30 17:21:58 分类:人 ...

  9. 超详细的golang学习指南,golang知识图谱

    golang知识图谱 基础知识 go 语言关键字.标识符.数据类型.变量.流程控制.函数.数组.闭包 关键字 break - 使用break关键字可以终止循环并继续执行其余代码 case - 这是sw ...

  10. Golang(1)Golang语言简介

    Golang(1)Golang语言简介 Golang(2)win10下安装Go语言 Golang(3)CentOS7系统安装Go语言 一.Golang的学习方向 (1)区块链研发工程师 (2)Go服务 ...

最新文章

  1. 分享45款高质量的免费(X)HTML/CSS模板
  2. python 类的特殊属性、特殊方法 __str__,__bases__,__mor__,__add__,__call__
  3. ue4 开发动作游戏_两年时间独自用UE4制作的动作游戏,传说一般的制作人离忧先生...
  4. 计算机应用基础 pdf 陈建军教案,温州市第二职业中等专业学校(温五中) 教学资源 温州市《计算机应用基础》学业水平测试考纲(转发)...
  5. 信息采集软件测试,Telegraf采集CPU数据,测试派详解
  6. Ajax/REST 第1部分
  7. python调用大漠找图_[教程贴]按键精灵调用大漠插件后台找图示例
  8. 输出直角三角形 java
  9. c55x 汇编语言指令,[转载]关于TMS320C55x的汇编语言中的.sym伪指令
  10. 高手教您编写简单的JSON解析器
  11. 在 Tomcat 中部署 Java Web 程序 ( jar cvf *.war */. ) war 包
  12. Linux 查看dns运行状态
  13. AD域控exchange邮箱—powershell 程序暂停sleep 继续执行的方法
  14. Oracle如何根据SQL_TEXT生成SQL_ID
  15. 20200131每日一句
  16. 路径规划(一) —— 环境描述(Grid Map Feature Map) 全局路径规划(最优路径规划(DijkstraA*star) 概率路径规划(PRMRRT))
  17. VBox下频繁出现0x00000000指令引用的0x00000000内存,该内存不能为written:解决方案(附文件)
  18. C/C++中各类数值型数据间的混合运算法则
  19. [三剑客]老男孩教育-三剑客笔试题集合
  20. mysql中文拼音排序

热门文章

  1. 【ArcGIS|空间分析】空间分析准备流程
  2. Java 泛型的本质——类型擦除
  3. 天正加载时在tshowbar卡死的解决方案
  4. win10计算机盘符如何,WIN10修改盘符怎么更改
  5. atm系统的用例模型_ATM自动取款机用例图.doc-_装配图网
  6. [Python笔记_1] Python基础知识要点
  7. C++11中的一些新特性以及代码详解
  8. 360网站卫士前端公共库已停止服务
  9. Revit新建平面视图
  10. LeetCode刷题分类