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