在某个地方,您显然有一个调用newWindowsSpecificThing(). 那应该在特定于 Windows 的文件中。如果是,那么它不可用也没有关系。你有一些东西“检查它是否在 Windows 上运行”这一事实暗示了if runtime.GOOS == "windows"某处的声明。而不是拥有它,而是将整个移动if到一个在 Windows 特定文件中定义的函数中。您还需要在!windows文件中定义该函数,这很好。
作为我的代码示例,我有一个函数:
func Setup() *config {
var cfg *config
// setup portable parts of cfg
return PlatformSpecificSetup(cfg)
}
然后我标记// +build windows了PlatformSpecificSetup()一个定义一种方式的文件,以及另一个// +build !windows定义另一种方式的标记。我从不需要检查runtime.GOOS,也不需要处理未定义的数据类型。该config结构本身是在这些文件中定义的,所以它可以为每个平台不同领域(只要他们同意足够Setup())。如果我更加小心,我可以创建一个结构,如:
type config struct {
// independent stuff
plat *platformConfig
}
然后只是platformConfig在每个平台文件中定义,但在实践中我发现这比它值得的麻烦更多。
三国纷争
相关分类