Cara Mengelakkan Ralat "Perdebatan Tidak Cukup dalam Ungkapan Seruan Kaedah" dalam Go
Semasa bekerja dengan Go, anda mungkin menghadapi masalah ralat berikut:
prog.go:18: not enough arguments in call to method expression JSONParser.Parse
Ralat ini boleh disebabkan oleh percubaan memanggil kaedah contoh seolah-olah ia kaedah pada skop pakej. Dalam erti kata lain, anda perlu menyatakan secara eksplisit contoh yang anda ingin panggil kaedah tersebut.
Pertimbangkan coretan kod berikut:
package main type Schema struct { } type JSONParser struct { } func (jsonParser JSONParser) Parse(toParse []byte) ([]Schema, int) { var schema []Schema // whatever parsing logic return schema, 0 } func main() { var in []byte actual, err2 := JSONParser.Parse(in) // This will result in the error }
Untuk membetulkan ralat, anda perlu membuat contoh jenis JSONParser dan panggil kaedah Parse pada contoh itu. Begini cara anda boleh melakukannya:
func main() { var in []byte jp := JSONParser{} // Create an instance of JSONParser actual, err2 := jp.Parse(in) // Call the Parse method on the instance }
Sebagai alternatif, anda boleh mentakrifkan kaedah Parse anda sebagai fungsi tanpa penerima dan memanggilnya terus:
func Parse(toParse []byte) ([]Schema, int) { var schema []Schema // whatever parsing logic return schema, 0 } func main() { var in []byte actual, err2 := Parse(in) // Call the Parse function directly }
Dengan menyatakan secara eksplisit kejadian atau menggunakan fungsi tanpa penerima, anda boleh mengelakkan ralat "argumen tidak mencukupi dalam ungkapan panggilan ke kaedah" dan kaedah contoh panggilan dengan betul dalam Go.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Tidak Cukup Hujah dalam Ungkapan Seruan Kaedah' dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!