4

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

4

1 回答 1

8

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

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

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

于 2013-05-24T15:39:07.933 回答