Golang 预处理器类似 C 风格的编译开关

2024-04-14

GO语言有预处理器吗?当我查找互联网时,几乎没有将 *.pgo 转换为 *.go 的方法。而且,我想知道这在 Go 中是否可行

#ifdef COMPILE_OPTION
  {compile this code ... }
#elif 
  {compile another code ...}

or, #undef in c


实现这一目标的最接近方法是使用构建约束 https://golang.org/pkg/go/build/#hdr-Build_Constraints。例子:

main.go

package main

func main() {
    println("main()")
    conditionalFunction()
}

a.go

// +build COMPILE_OPTION

package main

func conditionalFunction() {
    println("conditionalFunction")
}

b.go

// +build !COMPILE_OPTION

package main

func conditionalFunction() {
}

Output:

% go build -o example ; ./example
main()

% go build -o example -tags COMPILE_OPTION ; ./example
main()
conditionalFunction
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Golang 预处理器类似 C 风格的编译开关 的相关文章

随机推荐

  • 在 C 程序中使用 tcl 和 tk 存根

    我需要一个简单的 C 程序来创建 tcl 解释器 初始化 tcl 和 tk 然后加载给定的 tcl tk 脚本 我想使用 tcl 和 tk 存根 以确保程序将在具有不同版本的 tcl tk 的计算机上运行 我将使用这个程序而不是运行wish
  • 以编程方式清除 iPhone 上的二级缓存

    我创建了一个应用程序 我将从服务器下载图像并将其本地存储在 iPhone 的文件系统上 事情发生得很好 现在的问题是 当我退出应用程序时 我想清除 iPhone 上本地缓存的图像 如何删除 iPhone 上的缓存图像 它使用 iPhone
  • 处理不再存在的枚举值的反序列化

    我有一个枚举 JJJ 它有 3 个值 A B 和 C 在我的程序的早期版本中 它还有一个附加值 D 我希望能够读取由早期版本的程序创建的序列化对象 程序中 但在序列化对象中遇到值为 D 的 JJJ 类型变量时会抛出异常 最理想的情况是 我希
  • 将 JVM 字节码往返于文本表示的故障安全方法

    我正在寻找一种在 JVM 类文件和文本表示之间往返的故障安全方法 一项严格的要求是 只要文本表示形式保持不变 生成的往返 JVM 类文件在功能上与原始 JVM 类文件完全相同 此外 文本表示必须是人类可读和可编辑的 应该可以对文本表示进行小
  • ServiceStack OAuth - 注册而不是登录

    在 servicestack OAuth 实现中 我只看到了自动登录的可能性 例如 脸书账号 但是否能够支持通过 Facebook 登录进行注册过程 我想要的是让用户登录到 facebook 应用程序 然后加载他们的姓名 姓氏和电子邮件 并
  • 如何从命令行创建 Android 项目

    我正在尝试从命令行创建一个 Android 项目 我在以下链接上尝试了它是什么 如何从命令行使用gradle创建android项目 https stackoverflow com questions 20801042 how to crea
  • Laravel 扩展包类

    我在 Laravel 安装中添加了一个购物车包 但我需要向该类添加一个方法 如果我直接修改类 当我更新到新版本时 我的更改会被覆盖吗 如果是这样 在不破坏未来更新的情况下修改软件包的最佳方法是什么 谢谢您的帮助 JB 我不知道是否有任何从供
  • J2EE 中的应用程序管理事务

    有没有人有一个从 J2EE 6 容器内的 CDI 托管 bean 内开始 提交 回滚事务的最佳方法的示例 我遇到了一种特殊情况 其中带注释的方法对我不起作用 我从同一类中的另一个方法调用该方法 并且我需要手动设置事务边界 我想知道我可以在代
  • 错误消息“未终止的字符串文字”

    我使用 jQuery 输出 PHP 从数据库创建的 JSON 字符串的结果 唯一的问题是一些数据位于多行上 我该如何解决这个问题 导致 JavaScript 中出现未终止的字符串文字错误 以下代码将删除所有 r 和 n 字符 preg re
  • 为什么 Haskell [] (list) 不是类型类?

    我正在编写一个 Haskell 函数 它接受一个列表作为输入 也就是说 它没有理由不能是队列或出列 或者任何允许我访问它的 头 和 尾 并检查它是否为空 的东西 所以 a 输入类型似乎太具体了 但据我所知 没有标准库类型类可以准确捕获此接口
  • 返回打开、关闭或从一天中的时间开始关闭的功能

    我有很多小时的操作时间 我想确定商店是否在 30 29 28 27 分钟内打开 关闭或即将关闭 我在 Xcode Objectic C 中执行此操作 现在我必须在 50 个不同的操作小时内执行此操作 我已经制作了一个函数来执行此操作 但它不
  • 我可以从 freebase.com 导出地名翻译吗

    所以我看过 of the freebase http freebase comAPI 和我对它找到的名称的翻译印象深刻 IE 罗马 Roma Rom Rzym Rooma 罗马市 这是因为我有一个包含 5000 多个地点名称的数据库 我非常
  • 如何将 sqlite 3.8.2 升级到 >= 3.8.3

    在使用 Python 3 7 2 的虚拟环境中 我尝试运行 djangopython manage py startap myapp我收到此错误 raise ImproperlyConfigured SQLite 3 8 3 or late
  • PHP mail() 中的空 $_POST

    对于以下方面的一些帮助将不胜感激 我已经在网络和 stackoverflow 上搜索了几个小时 我的php邮件功能有这个问题 我的网站上有一个表单 该网站使用 WordPress 其中包含两个文本字段 姓名和电话号码 表单中还有一个隐藏字段
  • 如何快速有效地调试 CloudFormation 模板?

    CloudFormation 是一项功能强大的 AWS 产品 允许以编程方式创建 AWS 资源堆栈 例如应用程序的网络层 https s3 amazonaws com cloudformation templates us east 1 v
  • Crm 2011 Outlook 客户端 - 设置有关强制

    我们的客户正在使用 Microsoft CRM 2011 Outlook 客户端 他们有独特的业务需求 他们希望所有使用 Outlook 发送电子邮件的员工都必须强制执行 设置相关内容 很奇怪吧 如果用户在发送电子邮件时忘记设置相关内容 O
  • (PostgreSQL)错误:无法打开关系

    我收到这个奇怪的错误 Caused by org postgresql util PSQLException ERROR could not open relation base 17369 1684 No such file or dir
  • 链接静态库后去除名称

    在 iOS 6 的静态库项目中 c 文件中的某些函数被其他函数引用 因此被视为全局符号 但不应向该库的用户公开 我怎么能够strip这些函数名出来了吗 另外 我怎样才能隐藏这些 obj 文件名 以便没有人可以看到 o 名称nm output
  • 清理 PHP/HTML 页面

    有人知道有什么好用的工具可以清理php和html文件吗 我以前使用过 Tidy 但它在单独处理 php 代码方面效果不佳 我知道 tidy 有多种实现 但是有没有专门针对 html 和 php 页面的工具统治冠军 清理代码从将 PHP 与
  • Golang 预处理器类似 C 风格的编译开关

    GO语言有预处理器吗 当我查找互联网时 几乎没有将 pgo 转换为 go 的方法 而且 我想知道这在 Go 中是否可行 ifdef COMPILE OPTION compile this code elif compile another