我正在Go中编写一个命令行实用程序(作为其操作的一部分)需要从用户那里获取密码。 Unix有一个很棒的gopass
模块可以做到这一点,我知道如何为Windows控制台编写一个模块。问题是Windows模块显然不会在* nix上构建,* nix版本不会在Windows上构建。由于Go缺乏任何预处理器支持(据我所知),我完全不知道正确的方法是什么。我知道这是可能的,因为Go本身必须为自己的库执行此操作,但我习惯的工具(条件导入/预处理器/等)似乎缺失。
答案 0 :(得分:8)
Go有构建约束,可以在.go文件中指定为注释,也可以作为文件名的一部分。
一组约束是针对目标操作系统的,因此您可以拥有一个用于Windows的文件,一个用于例如Windows Linux并在两者中以两种不同的方式实现相同的功能。
有关构建约束的更多信息位于http://golang.org/pkg/go/build/#hdr-Build_Constraints