Rumah >pembangunan bahagian belakang >Golang >Mengapa Golang Melemparkan Ralat 'tidak boleh menggunakan fungsi (jenis func()) sebagai jenis argumen' Semasa Melepasi Fungsi?
Di Golang, apabila menghantar fungsi sebagai argumen kepada fungsi lain, jenis tandatangan fungsi yang diluluskan mesti sepadan dengan tandatangan yang dijangkakan bagi fungsi penerima. Dalam kod anda, anda cuba menghantar fungsi berikut sebagai argumen:
UpperCaseHandler RepeatHandler
Walau bagaimanapun, tandatangan jenis yang dijangkakan untuk fungsi pengendali mesej ialah:
type MessageHandler func(MessageDelivery) (interface{}, error)
Seperti yang anda lihat , fungsi pengendali mesej yang dijangka mengambil struct MessageDelivery sebagai hujah dan mengembalikan antara muka{} dan ralat. Fungsi anda, walau bagaimanapun, ditakrifkan seperti berikut:
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) }
Perhatikan bahawa fungsi anda tiada nilai pulangan (antara muka{} dan ralat). Untuk membetulkannya, anda perlu mengubah suai fungsi anda agar sepadan dengan tandatangan yang dijangkakan. Begini cara anda boleh melakukannya:
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 }
Dengan menambah nilai pulangan yang hilang, fungsi anda kini akan sepadan dengan tandatangan yang dijangkakan dan anda akan dapat menghantarnya sebagai argumen kepada fungsi lain tanpa menemui " tidak boleh menggunakan fungsi (type func()) sebagai ralat taip argumen".
Atas ialah kandungan terperinci Mengapa Golang Melemparkan Ralat 'tidak boleh menggunakan fungsi (jenis func()) sebagai jenis argumen' Semasa Melepasi Fungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!