我正在用 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/