【发布时间】:2022-02-09 15:05:23
【问题描述】:
我想开发一个小型 Go 应用程序,向演示文稿的观众展示使用的击键快捷键。
要挂钩键盘事件,我将不得不使用一些特定于平台的代码。 Go 封装平台特定代码的方法是什么?我一直在搜索编译器开关或平台模块等关键字,但我真的找不到。
【问题讨论】:
-
出于好奇,“封装”是什么意思?另外,
runtime.GOOS的 if 语句有什么问题? -
我使用了封装,因为我想使用 Go-way 来分离平台特定的代码。 runtime.GOOS 没有任何问题,如果它可以处理特定于平台的代码,而这些代码可能无法在其他平台上编译。
-
啊,这更有意义。我不确定封装是正确的词,但足够公平。对于您的第二点,老实说,我想不出一个可以在一个 平台 上编译但不能在另一个平台上编译的有效 Go 代码示例。 (不同的编译器是一个不同的问题。)但是,我可以想到一些可能崩溃或中断的示例,但这就是
if runtime.GOOS == "windows" {}的想法。 -
用什么词比较好?我总是想学习一些东西:-)
-
嗯,对我来说,“封装”的含义是 A)荒谬的 OOP 对象模型和设计/API 原则(Java#,有人吗?)或 B)通过源代码混淆隐藏正在发生的事情/更荒谬API 暴露原则。更好的词可能是“单独的”,或者在这种情况下可能是“有条件地编译”。 :)
标签: go architecture cross-platform