Ich versuche, eine Golang-Struktur mit einer eingebetteten Vorlage zu initialisieren. Da Vorlagen keine Felder haben, würde ich erwarten, dass die richtige Anzahl von Variablen zu einem Konstruktor zuweisen funktionieren würde, sondern der Compiler beschwert sich, dassGolan Initialisierung der Struktur mit eingebetteten Vorlage: zu wenig Werte in Struct Initialisierer
main.go:17:19: too few values in struct initializer
package main
import "fmt"
type TestTemplate interface {
Name() string
}
type TestBase struct {
name string
TestTemplate
}
func New(name string) *TestBase {
return &TestBase{name} // This fails
//return &TestBase{name: name} // This works
}
func (v *TestBase) Name() string {
return v.name
}
func main() {
fmt.Println(New("Hello"))
}
Ahh, ich um die Vorlage zu definieren gemeint Namen haben() anstelle von Print(), aber das ist nicht zu relevant für das Problem. Danke, ich dachte, dass die Vorlage kein Feld war und sagte nur dem Compiler, dass dieses Objekt diese Funktionen implementieren sollte. – Spellchaser
Seien Sie vorsichtig, wenn Sie versuchen, traditionelle OOP-Konzepte in Go zu integrieren. Die Go-Sprache wurde dafür nicht gebaut.Die Einbettung teilt dem Compiler lediglich mit, dass auf die 'Print/Name'-Methode direkt * von' TestBase' zugegriffen werden kann, ohne das Feld anzugeben, zu dem er gehört, aber der eingebettete Typ und seine Methode haben keine Kenntnis über den Typ, in den sie eingebettet sind , so dass die Methode 'Name/Drucken' keinen Zugriff auf das Feld' TestBase.name' hat. – mkopriva