Ralat "tidak boleh menggunakan fungsi sebagai jenis dalam argumen"
Dalam kod Go yang disediakan, anda cuba menghantar fungsi sebagai argumen ke fungsi lain, tetapi anda menghadapi ralat "tidak boleh menggunakan fungsi (jenis func()) sebagai jenis argumen." Ralat ini menunjukkan bahawa jenis fungsi yang anda cuba hantar tidak sepadan dengan jenis hujah yang dijangkakan.
Untuk menyelesaikan isu ini, pastikan tandatangan fungsi yang anda hantar sepadan dengan jenis yang dijangkakan. hujahnya. Dalam kes anda, anda menghantar fungsi yang mengambil struct MessageDelivery sebagai hujah dan mengembalikan nilai dan ralat. Walau bagaimanapun, jenis argumen yang dijangkakan menjangkakan fungsi yang mengambil struct MessageDelivery sebagai argumen dan mengembalikan antara muka{} secara langsung.
Untuk membetulkannya, ubah suai fungsi anda seperti berikut:
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 mengubah suai fungsi anda untuk mengembalikan antara muka{} secara langsung, ia kini akan sepadan dengan jenis hujah yang dijangkakan dan ralat harus diselesaikan.
Atas ialah kandungan terperinci Mengapa Kod My Go Menghasilkan 'tidak boleh menggunakan fungsi sebagai hujah jenis' dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!