在 Go 的 aws-sdk-v2 庫中,我們有以下接口定義:type Retryer interface { GetInitialToken() (releaseToken func(error) error)}type RetryerV2 interface { Retryer GetInitialToken() (releaseToken func(error) error)}(代碼在這里:https ://github.com/aws/aws-sdk-go-v2/blob/main/aws/retryer.go )這會導致編譯錯誤:aws/retryer.go:81: GetInitialToken redeclared (compile)這段代碼是否正確?是否可以在接口中重新聲明函數?我該如何解決這個問題?
1 回答

有只小跳蛙
TA貢獻1824條經驗 獲得超8個贊
您可能正在使用舊版本的 Go。從 Go 1.14 開始允許重疊方法集,并且代碼在Go Playground上編譯。
根據重疊接口提案,Go 1.14 現在允許嵌入具有重疊方法集的接口:來自嵌入式接口的方法可能與(嵌入)接口中已經存在的方法具有相同的名稱和相同的簽名。這解決了菱形嵌入圖通常(但不限于)出現的問題。接口中顯式聲明的方法必須像以前一樣保持唯一。
如果您發布的代碼出現編譯時錯誤,則表明您使用的是 1.14 之前的 Go。緊急更新!請注意,僅支持最后 2 個主要版本(當前為 1.17 和 1.16)。您使用 1.13 之類的版本存在重大風險!
- 1 回答
- 0 關注
- 107 瀏覽
添加回答
舉報
0/150
提交
取消