我需要帮助来理解为什么会抛出这个错误:
我使用指针是因为我希望它更新字段。
prog.go:56:不能使用 MammalImpl 文字(类型 MammalImpl)作为数组元素中的类型 Mammal:MammalImpl 没有实现 Mammal(SetName 方法有指针接收器) prog.go:57:不能使用 MammalImpl 文字(类型 MammalImpl)作为类型 Mammal在数组元素中: MammalImpl 没有实现 Mammal(SetName 方法有指针接收器)
我不确定为什么这无法设置/覆盖 name 属性,如下所示。
package main
import (
"fmt"
)
type Mammal interface {
GetID() int
GetName() string
SetName(s string)
}
type Human interface {
Mammal
GetHairColor() string
}
type MammalImpl struct {
ID int
Name string
}
func (m MammalImpl) GetID() int {
return m.ID
}
func (m MammalImpl) GetName() string {
return m.Name
}
func (m *MammalImpl) SetName(s string) {
m.Name = s
}
type HumanImpl struct {
MammalImpl
HairColor string
}
func (h HumanImpl) GetHairColor() string {
return h.HairColor
}
func Names(ms []Mammal) *[]string {
names := make([]string, len(ms))
for i, m := range ms {
m.SetName("Herbivorous") // This modification is not having any effect and throws and error
names[i] = m.GetName()
}
return &names
}
func main() {
mammals := []Mammal{
MammalImpl{1, "Carnivorious"},
MammalImpl{2, "Ominivorious"},
}
numberOfMammalNames := Names(mammals)
fmt.Println(numberOfMammalNames)
}
Go Playground 代码在这里http://play.golang.org/p/EyJBY3rH23
SMILET
相关分类