博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Go 条件编译
阅读量:5798 次
发布时间:2019-06-18

本文共 1228 字,大约阅读时间需要 4 分钟。

  hot3.png

GOPATH 环境变量, 我这里设置为  "d:\golang\"    目录

153805_qyhh_98920.png

代码目录结构

154044_P4pO_98920.png

 

d:\golang\src\tagerTest\main.go

// tagerTest project main.gopackage mainimport (	"fmt"	"tagerTest/test")func main() {	test.Myprint()	fmt.Println("Hello World!")}

d:\golang\src\tagerTest\test\p1.go

// +build !xxpackage testimport (	"fmt")func Myprint() {	fmt.Println("myprint in p1")}

d:\golang\src\tagerTest\test\p2.go

// +build xxpackage testimport (	"fmt")func Myprint() {	fmt.Println("myprint in p2")}

从上面我们看到 p1.go 和 p2.go 中都存在 Myprint() 这个函数

我们现在来编译看看输出结果!

D:\golang\src\tagerTest>go buildD:\golang\src\tagerTest>.\tagerTest.exemyprint in p1Hello World!

没有编译问题,输出结果调用的是  p1.go 里面的 Myprint() 函数!

那么怎么调用 p1.go 里面的 Myprint() 函数了 ?

D:\golang\src\tagerTest>go build -tags=xxD:\golang\src\tagerTest>.\tagerTest.exemyprint in p2Hello World!

在 编译的时候加上了 -tags=xx,编译后发现调用的就是 p2.go 里面的 Myprint() 函数了

 

条件编译

我们发现,条件编译的关键在于-tags=xx,也就是-tags这个标志,这就是Go语言为我们提供的条件编译的方式之一。

好了,回过头来看我们刚开始时 test\p1.go、 test\p2.go两个Go文件的顶部,都有一行注释:

// +build !xx

// +build xx

// +build !xx表示,tags不是xx的时候编译这个Go文件。这两行是Go语言条件编译的关键。+build可以理解为条件编译tags的声明关键字,后面跟着tags的条件。

// +build xx表示,tags是xx的时候编译这个Go文件。

也就是说,这两种条件是互斥的,只有当tags=xx的时候,才会使用p2.go 里面的 Myprint,其他情况使用p1.go 里面的 Myprint

 

转载于:https://my.oschina.net/tsh/blog/1619128

你可能感兴趣的文章
LeetCode--112--路径总和
查看>>
感悟贴2016-05-13
查看>>
百度编辑器ueditor 光标位置的坐标
查看>>
DEV-C++ 调试方法简明图文教程(转)
查看>>
参加婚礼
查看>>
刚毕业从事java开发需要掌握的技术
查看>>
Java重写equals方法和hashCode方法
查看>>
Spark API编程动手实战-07-join操作深入实战
查看>>
EasyUI基础入门之Easyloader(载入器)
查看>>
java中ArrayList 、LinkList区别
查看>>
Spring ’14 Wave Update: Installing Dynamics CRM on Tablets for Windows 8.1
查看>>
利用rand7()构造rand10()
查看>>
MySQL 备份与恢复
查看>>
吃午饭前,按书上的代码写会儿--Hunt the Wumpus第一个版本
查看>>
TEST
查看>>
PAT A1037
查看>>
ReactiveSwift源码解析(三) Signal代码的基本实现
查看>>
(六)Oracle学习笔记—— 约束
查看>>
[Oracle]如何在Oracle中设置Event
查看>>
top.location.href和localtion.href有什么不同
查看>>