就说我有

// main.go
type Speaker interface {
  Speak()
}

type Person struct {}

func (p *Person) Speak() {
   panic("test")
}

在代码的其他地方给出一个人,有没有办法告诉他他实现了什么接口?这里很明显,Person实现了Speaker,但如果另一种类型

type Ghost interface {
  Speak()
}

存在于另一个包裹中?

对于上下文,我正在查看代码库,并且很难决定是否可以删除接收器方法,因为很难判断该方法是否存在是为了满足接口要求,还是只是为了增加功能.在自包含的代码库中,我可以删除它并查看是否出现编译器错误,但在公共库中不能这样做.

推荐答案

从Goland文档中,您可以转到带有正在实现或覆盖您的界面的沟槽图标的单个实现,也可以通过使用Cmd+U找到所有实现(假设您在Mac上工作).以下是指向文档的链接:

https://www.jetbrains.com/help/go/navigating-through-the-source-code.html#go_to_implementation

由于Goland是基于IntelliJ的Go IDE,您应该能够做同样的事情.您可能需要配置栏沟图标,但在IntelliJ中应该可以使用相同的命令.

Go相关问答推荐

Go Fiber和HTMX—HX—Trigger header被更改为HX—Trigger,这不是HTMX监听的内容

在Golang中,@LATEST和@UPGRADE特殊查询有什么不同?

如何使用Promela建模语言对Golang RWLock进行建模

GORM没有从 struct 创建完整的表,如何修复?

如何在GoFr中为生产和本地环境设置不同的配置?

重新赋值变量时未清除动态类型-这是错误吗?

JWT 如何解析声明有效性和错误?

将这两个函数合二为一的惯用方法

Golang Gorm Fiber - 如何将定义为别名的名称发送到索引模板?

testcontainers:如何修复绑定源路径不存在

使用Go和Operator SDK通过API调用设置Kubernetes Pods的安装步骤

为什么 net/http 不遵守超过 30 秒的超时持续时间?

有没有办法约束(通用)类型参数?

如何根据 Go 中第二次出现的分隔符拆分字符串?

Go AST:获取所有 struct

如何正确为 Go 中的值设置多种类型?

golang jwt.MapClaims 获取用户ID

Unescape 在 rss 中两次逃脱了标题

出于某种原因,Golang (Go) AES CBC 密文被填充了 16 个 0x00 字节

在 Go 中表达函数的更好方法( struct 方法)