Lassen Sie uns sagen, ich habe dies:Golang: Können Sie eine zurückgegebene Schnittstelle {} in einer Anweisung eingeben?
type Donut string
type Muffin string
func getPastry() (interface{}, error) {
// some logic - this is contrived
var d Donut
d = "Bavarian"
return d, nil
}
Ist es möglich, diese Linie auf einen zu reduzieren:
p, err := getPastry()
thisPastry := p.(Donut)
Mit anderen Worten, so etwas wie dieses, die nicht kompiliert:
thisPastry, err := getPastry().(Donut, error)
Nicht, dass zwei Zeilen Code, um das "generische" und geben Sie es ist eine große Sache, aber es fühlt sich einfach verschwenderisch und un-einfach für mich, und das bedeutet in der Regel bedeutet, ich vermisse etwas obvio uns :-)
IMO dieses Beispiel zeigt schlechte Praxis, wie wir ohne zu prüfen, für einen Fehler eine Art Behauptung machst, wo die Umbruchfunktion den Eindruck erweckt, dass sie Fehler zurückgibt und keine Panik auslöst. – baloo
@baloo Siehe bearbeitete Antwort. – icza
gute zusätzliche Hinweise! – baloo