为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
万千封印 2021-10-18 10:11:53
我需要在 linux 和 windows 中使用不同的包在 windows 上构建相同的文件,我需要import github.com/hashicorp/go-syslog在 linux 上import log/syslog和文件中的内部代码我必须使用syslog.ALERT或gsyslog.ALERT取决于 os. 是否存在于Go诸如宏之C++类的东西中,#ifdef以便我可以选择基于标志构建的内容?如何在没有相同文件的情况下实现这一点,以根据操作系统构建不同的内容?
查看完整描述

2 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

这就是构建标签的用途:

构建约束,也称为构建标记,是开始的行注释

// +build

它列出了文件应包含在包中的条件。约束可以出现在任何类型的源文件中(不仅仅是 Go),但它们必须出现在文件顶部附近,前面只能有空行和其他行注释。这些规则意味着在 Go 文件中,构建约束必须出现在 package 子句之前。

在运行时区分 OS/arch 的另一种方法是使用运行时的GOOS 和 GOARCH 常量:

GOARCH 是运行程序的架构目标:386、amd64 或 arm。

GOOS 是运行程序的操作系统目标:darwin、freebsd、linux 等之一。


查看完整回答
反对 回复 2021-10-18
  • 2 回答
  • 0 关注
  • 440 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信