go build 参数_Go语言 通过go bulid -tags 实现编译控制

e215ea4d06bc4cb207453d05de508e4b.png

Go语言提供的build tag 条件编译特性,顾名思义,只有在特定条件下才会构建对应的代码。

比如下面的源文件只有在设置debug构建标志时才会被构建:

// +build debugpackage mainvar buildMode = "debug"

可以用以下命令构建:

go build -tags="debug"
go build -tags="windows debug"

关于tags的说明:

  • 构建约束以一行+build开始的注释。在+build之后列出了一些条件,在这些条件成立时,该文件应包含在编译的包中;
  • 约束可以出现在任何源文件中,不限于go文件;
  • +build必须出现在package语句之前,+build注释之后应要有一个空行。
  • 多个条件之间,空格表示OR;逗号表示AND;叹号(!)表示NOT
  • 一个文件可以有多个+build,它们之间的关系是AND。

例如:

我们可以通过-tags命令行参数同时指定多个build标志,它们之间用空格分隔。

当有多个build tag时,我们将多个标志通过逻辑操作的规则来组合使用。比如以下的构建标志表示只有在”linux/386“或”darwin平台下非cgo环境“才进行构建。

// +build linux,386 darwin,!cgo
// +build windows

其中linux,386中linux和386用逗号连接表示AND的意思;

linux,386darwin,!cgo之间通过空白分割来表示OR的意思;

两行语句表示AND。

tags 应用场景:

不同环境下编译不同的文件,实现版本控制 、 环境配置控制等。

例如:项目中有如下文件代表不同的运行环境,通过 tag 控制不同环境下要编译的文件

dev.go

// +build devpackage mainimport "fmt"var version = "dev"func main() {fmt.Printf("running %s version", version)
}

release.go

// +build releasepackage mainimport "fmt"var version = "release"func main() {fmt.Printf("running %s version", version)
}

编译时通过指定不同的标签来编译不同文件:

编译 dev 环境

go build -tags="dev" 

编译 release 环境

go build -tags="release"

来思Go,Let's Go!欢迎留言交流学习!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259035.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

selinux 的管理

第十单元selinux 的管理一 显示及更改 SELINUX 模式getenforce ###显示selinux模式setenforce 0|1 ##0指permissive警告,1 表示 enforcing强制###vim /etc/sysconfig/selinux ###修改selinux开机状态###注:disable表示关闭&…

ubuntu15.10下安装opencv2.4.9python上调用opencv库

对于centos,可以参考:Install OpenCV-Python in Fedora 如果IPP难以下载可以在cmake时禁掉它,只需:cmake -DWITH_IPPOFF OpenCV3.3CUDA9.0 安装过程中遇到的问题,解析: https://blog.csdn.net/u014613745/a…

键盘改键软件_一秒五键,一键三招,万种光污染,杜伽K310樱桃轴机械键盘感受...

机械键盘我一直用的青轴,或者各种其他名字但其实本质就是青轴的。喜欢青轴那种清脆的声音,在我听来如同山间小溪流水般的叮咚。不过这声音在夜间分外的具有穿透力,更会在人身体不好的时候难以承受,所以每每用过之后却又不得不换回…

codeigniter钩子的使用

CodeIgniter 的钩子功能,使得我们可以在不修改系统核心文件的基础上,来改变或增加系统的核心运行功能。可是钩子究竟该怎么用呢?虽然不是很难,不过很多刚用ci的朋友可能还是不明白怎么用。 通过本文的简单实例,大家一下…

powerdesigner画关系图_想画好手绘,这些图你一定要画一下!

画好手绘除了对透视要深入了解掌握以及线条运用把握之外,还有很重要的就是要对空间物体的关系、比例、光影关系都要理解透彻。大体快可分割成多个x小体块。其实当年学习的绘画基础也是画好手绘的基础,画手绘依然需要去理解整体画面的空间黑白灰、物体穿插…

internetreadfile读取数据长度为0_【完结】TensorFlow2.0 快速上手手册

大家好,这是专栏《TensorFlow2.0》的第五篇文章,我们对专栏《TensorFlow2.0》进行一个总结。我们知道全新的TensorFlow2.0 Alpha已经于2019年3月被发布,新版本对TensorFLow的使用方式进行了重大改进,为了满足各位AI人对TensorFlow…

Facial Landmark Detection(人脸特征点检测)

原文地址:http://www.learnopencv.com/facial-landmark-detection/#comment-2471797375 作为计算机视觉研究员,我们很早就开始研究人脸。人脸分析领域最广为人知的就是人脸识别(face recognition).但是为了识别一幅图像中的人脸&…

Java中的Error和Exceptiond的异同点

Error和Exception的异同点: (1)Error类和Exception类都继承超类Java.lang.Throwable (2)Error:一般指与虚拟机相关的问题,如系统崩溃,内存溢出等。对于这类错误,仅靠程序…

superviseddescent (SDM C++11实现)环境配置

今天试着用了一下SDM的C11实现,本来以为挺简单的,可是配置环境还是花了一些时间。为了给自己留下一些记忆,特把配置过程记录下来。 这个实现是C11的版本,是一个通用版本,里面包含了很多的功能,比如函数的最…

python图形小游戏代码_手把手制作Python小游戏:俄罗斯方块(一)

手把手制作Python小游戏:俄罗斯方块1大家好,新手第一次写文章,请多多指教 A.准备工作: 这里我们运用的是Pygame库,因为Python没有内置,所以需要下载 如果没有pygame,可以到官网下载 pygame官网&…

关于Git使用的一些心得

2019独角兽企业重金招聘Python工程师标准>>> 本篇稍微记录下Git使用的一些心得。 对Git的使用,应该是从搭建自己的博客开始的。当时看到开源中国推荐的一篇基于码云hexo搭建自己博客的文章。所以就花了一天时间鼓捣了下博客。 顺带整理下目前能看到我写的…

Dlib机器学习库安装

昨天使用了一下dlib的人脸检测功能,效果出奇的好。下面给出dlib整个的安装过程和使用指导。 下载安装 我们可以从dlib的官网下载最新的版本,我的是dlib18.18.然后我们需要使用cmake编译dlib库和examples示例。 当然前提是你要按照好cmake和opencv。 …

ipv4地址是几位二进制数_几张思维导图,让你清楚的知道ip地址怎么回事?

网络工程中,ip地址是必须要了解的内容,今天我们用几张思维导图来给大家详细讲解IP地址。一、什么是IP地址在生活中我们使用具有上网功能的电子设备都有IP地址,就跟每个人都有自己的名字一样。IP地址分为IPV4 IPV6,我们所说的的IP地…

《关系营销2.0——社交网络时代的营销之道》一检查拼写和语法

本节书摘来异步社区《关系营销2.0——社交网络时代的营销之道》一书中的第2章,作者: 【美】Mari Smith 译者: 张猛 , 于宏 , 赵俐 责编: 陈冀康, 更多章节内容可以访问云栖社区“异步社区”公众号查看。 检查拼写和语法 关系营销2…

dlib人脸检测功能介绍

本文主要介绍三个点: 1. 如何单独建立一个工程,使用dlib的人脸检测功能。 2. 提高人脸检测率的两个方法 3. 加速人脸检测的方法 下面围绕这几个点展开叙述。 建人脸检测工程 1 . 首先我们先使用上期说的examples里的人脸检测。 我们只要将face_de…

ios网络开发 网络状态检查

http://www.cnblogs.com/hanjun/archive/2012/12/01/2797622.html 网络连接中用到的类: 一.Reachability 1.添加 Reachability 的.h和.m文件,再添加SystemConfiguration.framework。 2.Reachability中定义了三种网络状态: typedef Num{ NotR…

《众妙之门——网页排版设计制胜秘诀》——3.4 展现品牌视觉的同时保持网页的可读性...

本节书摘来自异步社区《众妙之门——网页排版设计制胜秘诀》一书中的第3章,第3.4节,作者: 【德】Smashing Magazine 译者: 侯景艳 , 范辰 更多章节内容可以访问云栖社区“异步社区”公众号查看。 3.4 展现品牌视觉的同时保持网页的…

vs2013创建及使用DLL

这几天看了许多关于生成Dll的博文,很有感触,遂整理在此,以供自己后续参考。 VS2013创建DLL 我们使用vs2013来生成Dll,其实使用其他的版本也是同理如此。步骤如下: 单击“新建项目”,选择“Win32 项目”&a…

iOS UISegmentedControl 的使用

当用户输入不仅仅是布尔值时,可使用分段控件(UISegmentedControl)。分段控件提供一栏按钮(有时称为按钮栏),但只能激活其中一个按钮。分段控件会导致用户在屏幕上看到的内容发生变化。它们常用于在不同类别…

js粘贴板为什么获取不到图片信息_【第1829期】复制黏贴上传图片和跨浏览器自动化测试...

前言这个操作体验倒是不错。今日早读文章由丁香园蒋璇投稿分享。蒋璇, 前端开发攻城狮, 现任职于丁香园. 英语爱好者, 测试驱动开发(TDD)&行为驱动开发(BDD)推崇者. 先专注于 https://github.com/Jiang-Xuan/tuchuang.space 项目的测试驱动开发探索正文从这开始~~在网页中上…