Heim > Backend-Entwicklung > Golang > Warum erzeugt mein Go-Code beim Verketten von Diensten mit der ASL-Bibliothek den Fehler „Funktion (Typ func()) kann nicht als Typ-in-Argument verwendet werden'?

Warum erzeugt mein Go-Code beim Verketten von Diensten mit der ASL-Bibliothek den Fehler „Funktion (Typ func()) kann nicht als Typ-in-Argument verwendet werden'?

Susan Sarandon
Freigeben: 2024-12-17 09:01:25
Original
538 Leute haben es durchsucht

Why Does My Go Code Produce a

„Funktion (Typ func()) kann nicht als Typ-in-Argument verwendet werden“

Dieser Go-Code zielt darauf ab, die Verkettung von Diensten durch die Verwendung verschiedener zu demonstrieren Funktionen wie das Konsumieren von Nachrichten, das Veröffentlichen von Nachrichten und das Beantworten von Nachrichten. Der Code verwendet die ASL-Bibliothek zur Verarbeitung von Messaging-Vorgängen.

Beim Versuch, den Code auszuführen, wird eine Fehlermeldung angezeigt, die darauf hinweist, dass die Funktionen UpperCaseHandler und RepeatHandler nicht als Argumente vom Typ asl.MessageHandler in ConsumeFunc verwendet werden können Methode der UpperCaser- bzw. Repeater-Dienste.

Um dieses Problem zu beheben, muss sichergestellt werden, dass die Funktionssignaturen mit der übereinstimmen erwartetes Format. Der Typ asl.MessageHandler erwartet eine Funktion, die ein busboy.MessageDelivery als Argument akzeptiert und ein Interface{} und einen Fehler zurückgibt.

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

Die Funktionen UpperCaseHandler und RepeatHandler in Ihrem Code entsprechen nicht den Erwartungen Unterschrift. Ihnen fehlt der Fehlerrückgabewert. Um dies zu beheben, ändern Sie die Funktionen wie folgt:

func UpperCaseHandler(md busboy.MessageDelivery) (interface{}, error) {
     s.Reply(MessageTest{strings.ToUpper(md.Message.(string))}, md.Delivery)
     return nil, nil
}

func RepeatHandler(md busboy.MessageDelivery) (interface{}, error) {
     s.Reply(MessageTest{strings.Repeat(md.Message.(string), 5)}, md.Delivery)
     return nil, nil
}
Nach dem Login kopieren

Durch Hinzufügen des Fehlerrückgabewerts und Sicherstellen einer ordnungsgemäßen Übereinstimmung mit der asl.MessageHandler-Signatur sollte der Code ausgeführt werden, ohne dass der oben genannte Fehler auftritt.

Das obige ist der detaillierte Inhalt vonWarum erzeugt mein Go-Code beim Verketten von Diensten mit der ASL-Bibliothek den Fehler „Funktion (Typ func()) kann nicht als Typ-in-Argument verwendet werden'?. 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