我该如何在Go语言中处理特定平台模块?

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

8
Go有构建限制,可以在.go文件中作为注释或文件名的一部分进行指定。
其中一个限制集是针对目标操作系统的,因此您可以为Windows和Linux等不同操作系统编写不同的文件,并以两种不同的方式实现相同的函数。
有关构建限制的更多信息,请参见http://golang.org/pkg/go/build/#hdr-Build_Constraints

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接