猿问

Go 上是否存在类似 C++ 中的宏(如 #ifdef),以便我可以选择基于标志构建的内容?

我需要在 linux 和 windows 中使用不同的包在 windows 上构建相同的文件,我需要import github.com/hashicorp/go-syslog在 linux 上import log/syslog

和文件中的内部代码我必须使用syslog.ALERTgsyslog.ALERT取决于 os. 是否存在于Go诸如宏之C++类的东西中,#ifdef以便我可以选择基于标志构建的内容?如何在没有相同文件的情况下实现这一点,以根据操作系统构建不同的内容?


万千封印
浏览 441回答 2
2回答

qq_花开花谢_0

这就是构建标签的用途:构建约束,也称为构建标记,是开始的行注释// +build它列出了文件应包含在包中的条件。约束可以出现在任何类型的源文件中(不仅仅是 Go),但它们必须出现在文件顶部附近,前面只能有空行和其他行注释。这些规则意味着在 Go 文件中,构建约束必须出现在 package 子句之前。在运行时区分 OS/arch 的另一种方法是使用运行时的GOOS 和 GOARCH 常量:GOARCH 是运行程序的架构目标:386、amd64 或 arm。GOOS 是运行程序的操作系统目标:darwin、freebsd、linux 等之一。
随时随地看视频慕课网APP

相关分类

Go
我要回答