在 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 关注
- 85 浏览
添加回答
举报
0/150
提交
取消