我真的很喜欢 GO 可以轻松完成的许多任务的交叉编译/平台操作。我有一个问题,我想,相当于 #ifdef / #else 类型的构造,用于执行/编译基于操作系统的函数。
这是场景 - 假设我有一个函数可以将信息插入操作系统的控制结构中,以便在用户下次启动系统时启动进程。在 Windows 上,我会为用户更新“RUN/RUNONCE”注册表项,在 MAC 上会有一个 plist 条目等。
本质上,我希望能够编写类似于此的内容(或重载操作系统特定功能):
func setStartupProcessLaunch () {
if [OS is Windows] {
updateRegistry(){}
} else if [OS is Darwin] {
updatePlist(){}
} else if [OS is Linux] {
doLinuxthing() {}
}
}
给定静态编译,任何未被调用的例程都将被标记为编译错误。所以理想情况下,我想在#ifdef WINDOWS、#ifdef MAC 类型的块中包含我的“doSpecificOS()”函数——实现这一点的正确方法是什么?我希望我不需要为每个 OS 平台创建多个相同程序的项目树。
红颜莎娜
相关分类