Heim > Backend-Entwicklung > Golang > Warum wirft Golang beim Übergeben von Funktionen den Fehler „Funktion (Typ func()) kann nicht als Typ-in-Argument verwendet werden' aus?

Warum wirft Golang beim Übergeben von Funktionen den Fehler „Funktion (Typ func()) kann nicht als Typ-in-Argument verwendet werden' aus?

Patricia Arquette
Freigeben: 2024-12-11 09:37:10
Original
667 Leute haben es durchsucht

Why Does Golang Throw a

"Funktion (Typ func()) kann nicht als Typ im Argument verwendet werden"

In Golang wird beim Übergeben einer Funktion als Argument an eine andere Funktion die Typsignatur verwendet der übergebenen Funktion muss mit der erwarteten Signatur der empfangenden Funktion übereinstimmen. In Ihrem Code versuchen Sie, die folgenden Funktionen als Argumente zu übergeben:

UpperCaseHandler
RepeatHandler
Nach dem Login kopieren

Die erwartete Typsignatur für die Nachrichtenhandlerfunktion lautet jedoch:

type MessageHandler func(MessageDelivery) (interface{}, error)
Nach dem Login kopieren

Wie Sie sehen können verwendet die erwartete Nachrichtenhandlerfunktion eine MessageDelivery-Struktur als Argument und gibt ein Interface{} und einen Fehler zurück. Ihre Funktionen sind jedoch wie folgt definiert:

func UpperCaseHandler(md asl.MessageDelivery) {
     s.Reply(MessageTest{strings.ToUpper(md.Message.(string))}, md.Delivery)
}

func RepeatHandler(md asl.MessageDelivery) {
     s.Reply(MessageTest{strings.Repeat(md.Message.(string), 5)}, md.Delivery)
}
Nach dem Login kopieren

Beachten Sie, dass Ihren Funktionen die Rückgabewerte (interface{} und error) fehlen. Um dies zu beheben, müssen Sie Ihre Funktionen so ändern, dass sie der erwarteten Signatur entsprechen. So können Sie es machen:

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
}
Nach dem Login kopieren

Durch Hinzufügen der fehlenden Rückgabewerte stimmen Ihre Funktionen nun mit der erwarteten Signatur überein und Sie können sie als Argumente an die anderen Funktionen übergeben, ohne auf das „ Fehler: Funktion (Typ func()) kann nicht als Typ-in-Argument verwendet werden.

Das obige ist der detaillierte Inhalt vonWarum wirft Golang beim Übergeben von Funktionen den Fehler „Funktion (Typ func()) kann nicht als Typ-in-Argument verwendet werden' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage