第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Setter 方法未設(shè)置結(jié)構(gòu)屬性 Golang

Setter 方法未設(shè)置結(jié)構(gòu)屬性 Golang

Go
慕斯王 2021-09-13 16:03:31
我需要幫助來理解為什么會(huì)拋出這個(gè)錯(cuò)誤:我使用指針是因?yàn)槲蚁M伦侄?。prog.go:56:不能使用 MammalImpl 文字(類型 MammalImpl)作為數(shù)組元素中的類型 Mammal:MammalImpl 沒有實(shí)現(xiàn) Mammal(SetName 方法有指針接收器) prog.go:57:不能使用 MammalImpl 文字(類型 MammalImpl)作為類型 Mammal在數(shù)組元素中: MammalImpl 沒有實(shí)現(xiàn) Mammal(SetName 方法有指針接收器)我不確定為什么這無法設(shè)置/覆蓋 name 屬性,如下所示。 package mainimport (    "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
查看完整描述

1 回答

?
SMILET

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊

問題是您有一個(gè)SetName()具有指針接收器的方法:


func (m *MammalImpl) SetName(s string)

因此,如果您有一個(gè) type 值,則該值MammalImpl的方法集不包含該SetName()方法,因此它不實(shí)現(xiàn)該Mammal接口。


但是指向MammalImpl( *MammalImpl)的指針的方法集將包含該SetName()方法,因此它將實(shí)現(xiàn)該Mammal接口。


因此,當(dāng)您填充mammals切片時(shí),您必須用*MammalImpl值填充它,因?yàn)檫@是實(shí)現(xiàn)切片元素類型(即Mammal)的值。MammalImpl如果您已經(jīng)有一個(gè)MammalImpl值,您可以輕松獲得指向 a 的指針:使用地址&運(yùn)算符生成指向該值的指針:


mammals := []Mammal{

    &MammalImpl{1, "Carnivorious"},

    &MammalImpl{2, "Ominivorious"},

}

在Go Playground上試試你修改過的程序。


查看完整回答
反對(duì) 回復(fù) 2021-09-13
  • 1 回答
  • 0 關(guān)注
  • 150 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)