Zunächst einmal gibt es einen Fehler in Ihrem Code. Bis Sie keinen anderen Typ erstellt haben, der als String
definiert ist, müssen Sie ihn auf string
korrigieren.
Dann können Sie in Go Composite-Strukturen verwenden, was bedeutet, dass Sie direkt auf ein Struct-Feld zugreifen können, das in einer anderen Struktur enthalten ist, wie Sie bereits getan haben.
Dies bedeutet, dass Sie eine Methode auf einem Methodenempfänger aufrufen können, für den die struct-Felder deklariert sind. So korrigieren Sie Ihr Beispiel, wenn ich richtig verstehe Ihre Frage:
package main
import (
"fmt"
)
type A struct {
Number int
}
type B struct{
A
name string
}
func main() {
b := &B{A{1}, "George"}
b.GetValues()
}
func (b B) GetValues() {
fmt.Println(b.Number)
fmt.Println(b.name)
}
Im Beispiel unten, weil struct A
in struct B
enthalten ist, bedeutet dies, können Sie eine Struktur Feld in struct A
im GetValues Methode deklariert aufrufen. Dies liegt daran, dass struct B
die Felder struct A
erbt.
https://play.golang.org/p/B-XJc6jddE
Es gibt keine Vererbung in Go. Einige verwandte/mögliche Duplikate: [1] (http://stackoverflow.com/questions/21251242/is-it-possible-to-call-overridden-method-from-parent-struct-in-golang), [zwei] (http://stackoverflow.com/questions/30622605/can-embedded-struct-method-have-knowledge-of-parent-child), [drei] (http://stackoverflow.com/questions/29390736/go- embedded-struct-call-child-method-stattdessen-Eltern-Methode), [vier] (http://stackoverflow.com/questions/29144622/what-is-the-idiomatic-way-in-go-to-create -a-Komplex-Hierarchie von Strukturen. – icza