我正在開發一個模擬器,每個指令都很重要。我們被 Go 吸引是因為接口抽象,但從基準測試來看,調用接口的間接調用比直接調用方法要差 5 倍。然而,我們的項目結構現在依賴于使用接口來繞過循環依賴。有沒有辦法讓接口更快(可疑)或繞過沒有接口的循環依賴?
2 回答

撒科打諢
TA貢獻1934條經驗 獲得超2個贊
如果您看到循環依賴,則表明您的代碼位于不同的模塊中。將所有代碼移動到一個模塊中。那么你不應該需要一個接口。在 Go 中,模塊通常是相當大的分組。不要僅僅為了代碼組織而創建它們。

一只名叫tom的貓
TA貢獻1906條經驗 獲得超3個贊
好吧,首先是個壞消息,接口的速度和現在一樣快,可能會改進 1.7,但不會太多。
如果你的接口不是很大,你可以傳遞 funcs 而不是接口。
例子:
func Sort(a sort.Interface) // can be rewritten as
func Sort(ln int, lessFn func(i, j) bool, swapFn func(i, j))
但我 100% 同意@RobNapier。
- 2 回答
- 0 關注
- 158 瀏覽
添加回答
舉報
0/150
提交
取消