Rumah >pembangunan bahagian belakang >Golang >Mengapa saya mendapat 'hujah tidak mencukupi dalam ungkapan panggilan ke kaedah' dalam Go?

Mengapa saya mendapat 'hujah tidak mencukupi dalam ungkapan panggilan ke kaedah' dalam Go?

DDD
DDDasal
2024-11-08 16:46:021071semak imbas

Why am I getting

Memahami "Tidak Cukup Argumen dalam Ungkapan Seruan Kaedah" dalam Go

Dalam Go, mesej ralat "tidak cukup argumen dalam panggilan ke ungkapan kaedah" boleh ditemui apabila cuba memanggil kaedah dengan salah. Kaedah ialah fungsi yang dikaitkan dengan jenis tertentu dan ia mesti dipanggil menggunakan sintaks yang sesuai.

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)
}

Apabila melaksanakan kod ini, anda mungkin menghadapi ralat "tidak cukup argumen dalam panggilan ke kaedah ungkapan". Ini kerana JSONParser.Parse ialah kaedah contoh, bermakna ia mesti dipanggil pada tika tertentu jenis JSONParser.

Untuk menyelesaikan ralat ini, anda mesti mencipta tika jenis JSONParser terlebih dahulu. Ini boleh dilakukan dengan mengisytiharkan pembolehubah jenis dan memberikannya nilai yang sesuai. Sebagai contoh, anda boleh menulis semula fungsi utama seperti berikut:

func main() {
    var in []byte
    jp := JSONParser{}
    actual, err2 := jp.Parse(in)
}

Sekarang, apabila memanggil kaedah Parse, anda menggunakan sintaks yang betul kerana anda menyediakan contoh jenis JSONParser (jp) untuk dipanggil kaedah dihidupkan.

Ingat, apabila memanggil kaedah contoh, adalah penting untuk mencipta tika jenis itu dahulu. Jika anda cuba memanggil kaedah contoh tanpa tika, anda akan menghadapi ralat "argumen tidak mencukupi dalam ungkapan panggilan ke kaedah".

Atas ialah kandungan terperinci Mengapa saya mendapat 'hujah tidak mencukupi dalam ungkapan panggilan ke kaedah' dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn