In Go, menghadapi ralat "not enough arguments in call to method expression" boleh mengelirukan. Perincian penting untuk difahami ialah ralat timbul apabila kaedah contoh digunakan menggunakan sintaks peringkat pakej. Untuk mendalami isu ini, mari analisa contoh khusus daripada kod anda:
func main() { var in []byte actual, err2 := JSONParser.Parse(in) }
Di sini, anda cuba menggunakan kaedah Parse bagi jenis JSONParser. Walau bagaimanapun, anda memanggilnya seolah-olah ia adalah fungsi dalam skop pakej. Pendekatan yang betul adalah dengan membuat contoh JSONParser dahulu dan kemudian memanggil kaedah pada tika itu.
func main() { var in []byte jp := JSONParser{} // Create an instance of JSONParser actual, err2 := jp.Parse(in) // Now call the method on the instance }
Sebab mesej ralat yang mengelirukan ialah penerima kaedah (parameter dalam kurungan sebelum nama fungsi ) berkelakuan seperti mana-mana hujah lain yang dihantar ke fungsi. Oleh itu, pengkompil mentafsirkan ketiadaan penerima yang disediakan secara jelas sebagai bilangan argumen yang tidak mencukupi.
Ringkasnya, apabila menggunakan kaedah contoh, pastikan anda membuat instantiate jenis dan kemudian memanggil kaedah pada contoh itu, sebaliknya daripada menggunakan secara langsung sebagai fungsi dalam skop pakej.
Atas ialah kandungan terperinci Mengapa Go Memberi Ralat 'Tidak Cukup' Semasa Memanggil Kaedah Contoh?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!