预先声明的类型可以在Go中实现接口吗?

时间:2016-11-24 19:35:42

标签: go

假设我有一个接口Key,它有一个方法Hash() int,我想在Go中的集合结构中使用它。我希望能够在我的收藏中做一些事情,例如(c *Collection) Set(key Key, value Value)。我希望我的集合能够键入预先声明的类型,例如type IntKey int,这样我就可以在实现(k IntKey) Hash() int时利用一些有限的隐式类型。这是可能的,还是我需要将IntKey声明为结构?

1 个答案:

答案 0 :(得分:2)

任何(非内置)类型都可以满足接口,因此:

type IntKey int

func (k IntKey) Hash() int { ... }

和......

type Collection struct {
    // fields
}

func (c Collection) Hash() int { ... }

两者都满足您的Key界面。进一步阅读:https://golang.org/ref/spec#Interface_types