这是我创建的一个示例,我在其中声明了我的第一个结构,它是一个Toolbox包含 slice 的结构Hammers。Toolbox我为和制作了一个接口Hammer,这样其他人就可以使用我的函数而不必使用我的结构,只要他们遵循我的接口实现即可。
package main
import "fmt"
type ToolboxInterface interface {
GetHammers() []HammerInterface
}
type HammerInterface interface {
}
type Toolbox struct {
Hammers []Hammer
}
func (t Toolbox)GetHammers() []HammerInterface {
return []HammerInterface{t.Hammers}
}
type Hammer struct {
Color string
}
func CountHammersInToolbox(t ToolboxInterface) int {
hammers := t.GetHammers()
return len(hammers)
}
func main() {
toolbox := Toolbox{Hammers: []Hammer{
{Color: "Red"},
{Color: "Blue"},
{Color: "Green"}}}
fmt.Println(len(toolbox.Hammers))
fmt.Println(CountHammersInToolbox(toolbox))
}
我ToolboxInterface声明了GetHammers()我已经实现的方法。但是,CountHammersInToolbox 方法返回 1 而不是输出中看到的 3。
uberswe$ go run scratch/main.go
3
1
我尝试了不同的变体,但我觉得有点卡住了。我不明白为什么它返回 1 但我怀疑我以错误的方式声明了我的接口方法。
我应该如何声明一个接口,该接口具有返回不同接口的一部分的方法?
www说
相关分类