2 回答

TA貢獻2039條經驗 獲得超8個贊
在某個地方,您顯然有一個調用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在每個平臺文件中定義,但在實踐中我發現這比它值得的麻煩更多。
- 2 回答
- 0 關注
- 240 瀏覽
添加回答
舉報