gpt4 book ai didi

import - 这个类型实现了哪个接口(interface)?

转载 作者:数据小太阳 更新时间:2023-10-29 03:06:55 25 4
gpt4 key购买 nike

本质上,这里有四个关于 Golang 接口(interface)的问题,每个问题都比前一个稍微难一些。

  1. 假设我们导入了很多接口(interface),A、B、C、...、G
进口 ( “一种”, “乙”, “C”, //更多的 ... “G” )

然后我们定义一个类型 S:

type S struct {
// more ...
}

现在如果 S“实现”其中一个接口(interface):

func (s S) Foo() {
// more ...
}

到目前为止,除了查看和搜索 A - G 的接口(interface)声明外,还有其他方法可以判断 S 实现了 A - G 的哪个接口(interface)吗?如果不是,有没有办法明确告诉S实现哪个接口(interface)?至此,似乎推断出实现了哪个接口(interface)S。

  1. 如果对于同一示例,B、C、D 接口(interface)都具有具有相同签名的 Foo() 方法。在这种情况下,S 实现了哪个接口(interface)?这是否取决于这些接口(interface)从 B、C 和 D 导入的顺序?

  2. 如果我们不导入接口(interface),而是在同一个文件中声明和定义接口(interface) B、C、D,但这些接口(interface)又都具有具有相同签名的 Foo() 方法,那么 S 实现了哪个接口(interface)?它取决于声明或定义这些接口(interface)的顺序吗?

  3. 如果,我们在同一个文件中声明和定义了 B、C、D 接口(interface),B 有 Foo() 方法,C 有 Bar() 方法,D 有 Foo() 和 Bar()。现在如果 S 实现了 Foo() 和 Bar(),那么 S 是实现了 B 和 C,还是 S 只实现了 D?

最佳答案

  1. 没有。 (但作为旁注,您不导入接口(interface),而是导入包。)

  2. 所有这些。顺序无关紧要。如果您声明了类型为 BCD 的变量,那么它们都可以包含一个 S.

  3. 所有这些。您在相同或不同文件中执行的操作无关紧要。

  4. 所有这些。 S 实现了 B 因为 SFoo()S 实现了 C,因为 SBar()S 实现了 D,因为 SFoo()Bar()

关于import - 这个类型实现了哪个接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31306506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com