cross-platform - 如何在 Go 中处理特定于平台的模块?

标签 cross-platform go

我正在用 Go 编写一个命令行实用程序(作为其操作的一部分)需要从用户那里获取密码。有一个用于 Unix 的很棒的 gopass 模块可以执行此操作,我知道如何为 Windows 控制台编写一个。问题是 Windows 模块显然不会在 *nix 上构建,*nix 版本也不会在 Windows 上构建。由于 Go 缺乏任何预处理器支持(据我所知),我完全不知道解决这个问题的正确方法是什么。我知道这是可能的,因为 Go 本身必须为其自己的库执行此操作,但我习惯使用的工具(条件导入/预处理器等)似乎丢失了。

最佳答案

Go 有构建约束,可以在 .go 文件中指定为注释,也可以作为文件名的一部分。

一组约束是针对目标操作系统的,所以你可以有一个文件用于 Windows,一个用于例如。 Linux和两者以两种不同的方式实现相同的功能。

有关构建约束的更多信息,请访问 http://golang.org/pkg/go/build/#hdr-Build_Constraints

关于cross-platform - 如何在 Go 中处理特定于平台的模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16738629/

相关文章:

c++ - 跨平台 C++ 代码架构

c# - 与 C#/Mono 后端配合良好的跨平台 UI 模块

go - 不内联简单函数

multithreading - 在进行异步I/O时,内核如何判断I/O操作是否完成?

python - 使用 BeautifulSoup 或 golang colly 解析 HTML 时遇到问题

C++ 跨平台开发(Windows 和 Mac OS)

c++ - 在 Cygwin 上编译 native wxWidgets 应用程序

python - 子进程.Popen : 'OSError: [Errno 13] Permission denied' only on Linux

go - goroutine 在创建 channel 时如何表现

go - antlr4的golang visitor pattern是否处于可用状态?