Ich komme aus Java und derzeit versuchen zu lernen, gehen. Ich struggeling mit interface
Interface-Methode mit mehreren Rückgabetypen
bedenken Sie:
type Generatorer interface {
getValue() // which type should I put here ?
}
type StringGenerator struct {
length int
}
type IntGenerator struct {
min int
max int
}
func (g StringGenerator) getValue() string {
return "randomString"
}
func (g IntGenerator) getValue() int {
return 1
}
Ich möchte die getValue()
Funktion zurückgeben ein string
oder int
, je nachdem, ob sie von StringGenerator
oder IntGenerator
genannt Wenn ich versuche, dies zu kompilieren, bekomme ich folgenden Fehler:
kann s nicht verwenden (Typ * StringGenerator) als Typ Generatorer in Array oder Scheibe wörtliche: * StringGenerator nicht implementiert Generatorer (falsche Typ für getValue-Methode)
haben getValue() string
getValue wollen ()
Wie kann ich das erreichen?
Was versuchen Sie zu erreichen? Wie würden Sie das gleiche in Java machen? Welchen Nutzen hat eine Schnittstelle, die je nach Implementierung unterschiedliche Inhalte zurückgeben kann? Das klingt nicht nach dem richtigen Job für eine Schnittstelle zu mir (weder in Go noch in Java). –
@VincentvanderWeele Ich habe meinen Code auf Stackreview hier eingereicht: https://codereview.stackexchange.com/questions/168955/generate-thousands-of-json-documents-in-go. Die Frage erklärt das Ziel des Projekts und warum brauche ich eine Schnittstelle, um mein Problem zu lösen! – felix
Ah, alles ist dynamisch, das erklärt! Go's Hauptstärke liegt in statisch getippten Problemen, daher würde ich sagen, dass dieses Problem nicht die beste Übereinstimmung für die Sprache ist. Natürlich ist es möglich und genauso wie in Java [Reflexion] (https://golang.org/pkg/reflect/) ist höchstwahrscheinlich die Lösung. –