为了账号安全,请及时绑定邮箱和手机立即绑定

aws-sdk-v2 中 Go 中的接口重新声明:是否正确?

aws-sdk-v2 中 Go 中的接口重新声明:是否正确?

Go
泛舟湖上清波郎朗 2022-11-15 10:46:36
在 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 发布日志:

根据重叠接口提案,Go 1.14 现在允许嵌入具有重叠方法集的接口:来自嵌入式接口的方法可能与(嵌入)接口中已经存在的方法具有相同的名称和相同的签名。这解决了菱形嵌入图通常(但不限于)出现的问题。接口中显式声明的方法必须像以前一样保持唯一

如果您发布的代码出现编译时错误,则表明您使用的是 1.14 之前的 Go。紧急更新!请注意,仅支持最后 2 个主要版本(当前为 1.17 和 1.16)。您使用 1.13 之类的版本存在重大风险!


查看完整回答
反对 回复 2022-11-15
  • 1 回答
  • 0 关注
  • 85 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信