当前位置: 首页 > 面试题库 >

具有嵌入式匿名接口的结构的含义?

楚瑞
2023-03-14
问题内容

sort 包:

type Interface interface {
    Len() int
    Less(i, j int) bool
    Swap(i, j int)
}

...

type reverse struct {
    Interface
}

Interfacestruct中的匿名接口是什么意思reverse


问题答案:

通过这种方式,反向实现了sort.Interface,我们可以覆盖特定的方法而不必定义所有其他方法

type reverse struct {
        // This embedded Interface permits Reverse to use the methods of
        // another Interface implementation.
        Interface
}

请注意,这里是如何交换(j,i)而不是交换的(i,j),这也是为struct声明的唯一方法,reverse即使reverse实现sort.Interface

// Less returns the opposite of the embedded implementation's Less method.
func (r reverse) Less(i, j int) bool {
        return r.Interface.Less(j, i)
}

无论此方法内部传递了什么结构,我们都会将其转换为新的reverse结构。

// Reverse returns the reverse order for data.
func Reverse(data Interface) Interface {
        return &reverse{data}
}

真正的价值在于,如果您认为如果无法采用这种方法,该怎么办。

  1. Reversesort.Interface吗?添加另一种方法?
  2. 创建另一个ReverseInterface?
  3. …?

任何此类更改都需要跨数千个要使用标准反向功能的软件包的许多行代码



 类似资料:
  • 问题内容: 我有一个json作为 我想将我的结构编组到json之上并创建如下结构- 我在初始化上述结构时遇到麻烦。我不确定如何以以下方式初始化匿名结构: 我通过为页面信息创建一个单独的结构并将其与父结构附加在一起来解决此问题。但是,必须有某种方法来执行 匿名 嵌套结构的初始化,就像我对上面的 Fields (字符串切片)所做的一样。谁能将我重定向到一些指南来做到这一点? 问题答案: 这可行,但是很

  • 问题内容: http://play.golang.org/p/vhaKi5uVmm [第一个问题] 我们如何以及为什么需要这种看起来很奇怪的结构?它是空结构还是匿名结构?我用谷歌搜索,但是找不到正确的答案或说明文档。 原始资料来自Andrew Gerrand的演讲 http://nf.wh3rd.net/10things/#10 这里 完成是struct {}类型的通道 所以我尝试了 但这是行不通

  • 问题内容: 是否可以在不使用嵌入式结构的情况下继承类型的方法? 代码的第一个片段是将结构嵌入其中的工作代码,我可以在上调用该方法。我不喜欢的是,当我初始化时,我有(?)来初始化其中的结构。有没有解决的办法? 最终,我想做以下事情。where 是类型和初始化位置,也不需要初始化结构。以下代码不起作用,但可能清楚我的目标是什么。 我将添加更多使用的方法的结构,这就是我要问的原因。如果只拥有,我将拥有可

  • 问题内容: 该程序的输出是 map [] ,但我想要 map [Id:true name:true] 我试图弄干我的一些SQL CRUD代码,并认为嵌入处理读和写数据库的持久性结构会很好。在下面的示例中,持久性结构将为Inner,而我的模型将为Outer。谢谢! 问题答案: 你不能 您专门在上调用了一个方法,该方法不知道其嵌入位置。嵌入不是继承,它是简单的自动委派。 您可能希望将它们包装在一个通用

  • 10.5.1 定义 结构体可以包含一个或多个 匿名(或内嵌)字段,即这些字段没有显式的名字,只有字段的类型是必须的,此时类型就是字段的名字。匿名字段本身可以是一个结构体类型,即 结构体可以包含内嵌结构体。 可以粗略地将这个和面向对象语言中的继承概念相比较,随后将会看到它被用来模拟类似继承的行为。Go 语言中的继承是通过内嵌或组合来实现的,所以可以说,在 Go 语言中,相比较于继承,组合更受青睐。

  • 问题内容: 我已经阅读了“ C#匿名实现接口(或抽象类) ”线程以匿名实现接口。但是我想知道使用委托或任何类似方法的.NET 2.0(NO LINQ)是否也可能实现 我从JAVA知道以下可能: (我希望我还记得,是一段时间以前我使用JAVA,但我想它是类似的东西)。每当方法需要接口的实例并且仅被调用一次时,这可能会有所帮助,因此无需为此单一方法创建新的类。 问题答案: .NET 2.0还支持匿名委