Heim > Backend-Entwicklung > Golang > Analyse des Problems, dass die Adresse in Golang nicht abgerufen werden kann

Analyse des Problems, dass die Adresse in Golang nicht abgerufen werden kann

王林
Freigeben: 2019-12-24 16:46:12
Original
3718 Leute haben es durchsucht

Analyse des Problems, dass die Adresse in Golang nicht abgerufen werden kann

Das Codebeispiel lautet wie folgt:

func main() {
    var a Integer = 1
    var b Integer = 1
    sum := a.Add(b)
    fmt.Println(sum)

    var i interface{} = a
    sum = i.(Integer).Add(b) // 报错
    fmt.Println(sum)
}

type Integer int

func (a *Integer) Add(b Integer) Integer {
    return  *a + b
}
Nach dem Login kopieren

Die Fehlermeldung lautet wie folgt:

test\testVar.go:16:19: cannot call pointer method on i.(Integer)
test\testVar.go:16:19: cannot take the address of i.(Integer)
Nach dem Login kopieren

Diese Situation tritt aufgrund der Add-Methode auf erfordert einen Integer-Zeigertyp Der Empfänger, und das i.(Integer), das wir übergeben haben, ist ein Wert, und dieser Wert ist keiner Variablen zugewiesen, sodass das Symbol „&“ die Adresse nicht abrufen kann.

Der richtige Weg besteht darin, i.(Integer) einer Variablen zuzuweisen oder den Methodenempfänger in einen normalen Typ zu ändern.

Codebeispiele sind wie folgt:

   var i interface{} = a
    c := i.(Integer)
    sum = c.Add(b)
    fmt.Println(sum)
Nach dem Login kopieren

oder

func (a Integer) Add(b Integer) Integer {    
return  a + b
}
Nach dem Login kopieren

Empfohlene verwandte Artikel und Tutorials: Golang-Tutorial

Das obige ist der detaillierte Inhalt vonAnalyse des Problems, dass die Adresse in Golang nicht abgerufen werden kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage