Seruan Fungsi Perkhidmatan: Tidak Padan Hujah
Dalam kod ini, anda menghadapi isu di mana fungsi UpperCaseHandler dan RepeatHandler tidak serasi dengan tandatangan fungsi yang diharapkan untuk asl.MessageHandler.
cannot use UpperCaseHandler (type func(asl.MessageDelivery)) as type asl.MessageHandler in assignment
cannot use RepeatHandler (type func(asl.MessageDelivery)) as type asl.MessageHandler in argument to Repeater.ConsumeFunc
Memahami Tandatangan Fungsi
Jenis asl.MessageHandler menjangkakan fungsi dengan tandatangan berikut:
type MessageHandler func(MessageDelivery) (interface{}, error)
Ini bermakna fungsi ini harus mengambil satu struct MessageDelivery sebagai hujah dan mengembalikan kedua-dua nilai hasil (apa-apa jenis) dan ralat (jika ada).
Membetulkan Tandatangan Fungsi
Untuk menyelesaikan isu ini, ubah suai fungsi UpperCaseHandler dan RepeatHandler anda untuk memadankan tandatangan yang dijangkakan:
func UpperCaseHandler(md asl.MessageDelivery) (interface{}, error) { s.Reply(MessageTest{strings.ToUpper(md.Message.(string))}, md.Delivery) // Modified to return nil, nil as the MessageDelivery struct is handled by the ASL library return nil, nil } func RepeatHandler(md asl.MessageDelivery) (interface{}, error) { s.Reply(MessageTest{strings.Repeat(md.Message.(string), 5)}, md.Delivery) // Modified to return nil, nil as the MessageDelivery struct is handled by the ASL library return nil, nil }
Dengan perubahan ini, fungsi anda kini akan sepadan dengan yang dijangkakan tandatangan dan kod harus berjalan dengan jayanya.
Atas ialah kandungan terperinci Mengapakah Fungsi `UpperCaseHandler` dan `RepeatHandler` Saya Tidak Serasi dengan `asl.MessageHandler`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!