Mengapakah saya mendapat ralat \'titik bertitik atau baris baharu sebelum lain\' dalam kod Go saya?

Patricia Arquette
Lepaskan: 2024-11-02 19:17:02
asal
949 orang telah melayarinya

Why am I getting the

Koma bernoktah atau baris baharu yang tidak dijangka sebelum lain

Ralat "koma bernoktah tidak dijangka atau baris baharu sebelum lain" berlaku apabila terdapat koma bertitik atau aksara baris baharu sebelum kata kunci else dalam if -pernyataan lain. Dalam kod yang disediakan, ralat adalah pada baris 21:

for err == nil{
    subject, predicate, object := parseTriple(line)
    if subject == current_mid{
        current_topic[predicate] = append(current_topic[predicate], object)
    }
    else if len(current_mid) > 0{
        processTopic(current_mid, current_topic, xmlFile)
        current_topic = make(map[string][]string)
    }
    current_mid = subject
    line, err = r.ReadString('\n')
}
Salin selepas log masuk

Dalam kes ini, terdapat aksara baris baharu selepas pendakap penutup blok if, yang menyebabkan ralat. Untuk membetulkan ralat, pernyataan else if harus diletakkan pada baris yang sama dengan pendakap penutup:

for err == nil{
    subject, predicate, object := parseTriple(line)
    if subject == current_mid{
        current_topic[predicate] = append(current_topic[predicate], object)
    } else if len(current_mid) > 0{
        processTopic(current_mid, current_topic, xmlFile)
        current_topic = make(map[string][]string)
    }
    current_mid = subject
    line, err = r.ReadString('\n')
}
Salin selepas log masuk

Penjelasan:

Dalam Go, titik bertitik digunakan untuk menamatkan pernyataan. Walau bagaimanapun, Go juga secara automatik memasukkan koma bertitik pada penghujung baris tertentu, termasuk baris yang berakhir dengan pendakap tutup }. Ini bermakna jika anda mempunyai blok if yang merentangi berbilang baris, anda mesti meletakkan pernyataan else pada baris yang sama dengan pendakap tutup, atau Go akan memasukkan koma bernoktah selepas pendakap tutup dan menyebabkan ralat sintaks.

Mesej ralat pada baris 28 dan 32 ("pernyataan bukan pengisytiharan di luar badan fungsi") juga disebabkan oleh ralat pada baris 21. Pendakap penutup pada baris 21 tidak ditamatkan dengan betul, jadi Go merawat baris selepasnya seolah-olah mereka berada di luar fungsi utama. Untuk membetulkan ralat ini, anda mesti membetulkan ralat pada baris 21 dahulu.

Atas ialah kandungan terperinci Mengapakah saya mendapat ralat \'titik bertitik atau baris baharu sebelum lain\' dalam kod Go saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan