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