在 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)
這段代碼是否正確?是否可以在介面中重新宣告功能?我該如何解決這個問題?
uj5u.com熱心網友回復:
您可能正在使用舊版本的 Go。從 Go 1.14 開始允許重疊方法集,并且代碼在Go Playground上編譯。
參考Go 1.14 發布日志:
根據重疊介面提案,Go 1.14 現在允許嵌入具有重疊方法集的介面:來自嵌入式介面的方法可能與(嵌入)介面中已經存在的方法具有相同的名稱和相同的簽名。這解決了菱形嵌入圖通常(但不是唯一)出現的問題。像以前一樣,介面中顯式宣告的方法必須保持唯一性。
如果您發布的代碼出現編譯時錯誤,則表明您使用的是 1.14 之前的 Go。緊急更新!請注意,僅支持最后 2 個主要版本(當前為 1.17 和 1.16)。您使用 1.13 之類的版本存在重大風險!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/434813.html
上一篇:識別推文訊息中正確的主題標簽索引
