Heim >Backend-Entwicklung >Golang >Warum erzeugt mein Go-Code „Funktion kann nicht als Typ-In-Argument verwendet werden' und wie kann ich das beheben?
Fehler „Funktion kann nicht als Typ im Argument verwendet werden“
Im bereitgestellten Go-Code versuchen Sie, eine Funktion als Argument zu übergeben zu einer anderen Funktion, aber es tritt die Fehlermeldung „Funktion (Typ func()) kann nicht als Typ-in-Argument verwendet werden“ auf. Dieser Fehler weist darauf hin, dass der Typ der Funktion, die Sie übergeben möchten, nicht mit dem erwarteten Typ des Arguments übereinstimmt.
Um dieses Problem zu beheben, stellen Sie sicher, dass die Signatur der Funktion, die Sie übergeben möchten, mit dem erwarteten Typ übereinstimmt das Argument. In Ihrem Fall übergeben Sie Funktionen, die eine MessageDelivery-Struktur als Argument verwenden und einen Wert und einen Fehler zurückgeben. Der erwartete Typ des Arguments erwartet jedoch eine Funktion, die eine MessageDelivery-Struktur als Argument verwendet und direkt eine Schnittstelle{} zurückgibt.
Um dies zu beheben, ändern Sie Ihre Funktionen wie folgt:
func UpperCaseHandler(md asl.MessageDelivery) (interface{}, error) { s.Reply(MessageTest{strings.ToUpper(md.Message.(string))}, md.Delivery) return nil, nil } func RepeatHandler(md asl.MessageDelivery) (interface{}, error) { s.Reply(MessageTest{strings.Repeat(md.Message.(string), 5)}, md.Delivery) return nil, nil }
Indem Sie Ihre Funktionen so ändern, dass sie direkt eine Schnittstelle{} zurückgeben, stimmen sie nun mit dem erwarteten Typ des Arguments überein und der Fehler sollte behoben sein.
Das obige ist der detaillierte Inhalt vonWarum erzeugt mein Go-Code „Funktion kann nicht als Typ-In-Argument verwendet werden' und wie kann ich das beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!