Rumah >pembangunan bahagian belakang >Golang >Mengapa Saya Mendapat Ralat 'Tidak Cukup Hujah dalam Ungkapan Seruan Kaedah' dalam Go?

Mengapa Saya Mendapat Ralat 'Tidak Cukup Hujah dalam Ungkapan Seruan Kaedah' dalam Go?

Patricia Arquette
Patricia Arquetteasal
2024-11-07 20:17:03641semak imbas

Why Am I Getting the

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!

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