Rumah > pembangunan bahagian belakang > Golang > Mengapa Pergi Melempar Ralat Semasa Memulakan Struct dalam For Loop?

Mengapa Pergi Melempar Ralat Semasa Memulakan Struct dalam For Loop?

Barbara Streisand
Lepaskan: 2024-12-31 17:48:09
asal
409 orang telah melayarinya

Why Does Go Throw an Error When Initializing a Struct in a For Loop?

Kekeliruan dengan Struct in For Loop Initializer

Dalam Go, ralat sintaks timbul apabila memulakan struct dalam gelung for. Menggunakan penunjuk ke struct berfungsi dengan baik, tetapi pembolehubah tempatan kadangkala diperlukan. Artikel ini menyelidiki isu ini dan menyediakan penyelesaian.

Coretan kod yang bermasalah:

for r := Request{}; r.err == nil; r.id++ {
    r.line, r.err = input.ReadSlice(0x0a)
    channel <- r
}
Salin selepas log masuk
Salin selepas log masuk

Mempermudahkan kod, kami mendapat:

for r := Request{}; r.err == nil; r.id++ {
    r.line, r.err = input.ReadSlice(0x0a)
    channel <- r
}
Salin selepas log masuk
Salin selepas log masuk

Kod ini terhasil dalam ralat berikut:

expected boolean or range expression, found simple statement (missing parentheses around composite literal?) (and 1 more errors)
Salin selepas log masuk

Ralat berpunca daripada kekaburan dalam menghuraikan pendakap pembukaan ('{'). Ia boleh menjadi sebahagian daripada literal komposit atau permulaan bagi blok.

Untuk menyelesaikan kekaburan ini, kurungan ditambah di sekeliling literal komposit:

for r := (Request{}); r.err == nil; r.id++ {
    r.line, r.err = input.ReadSlice(0x0a)
    channel <- r
}
Salin selepas log masuk

Dengan melampirkan permulaan struct dalam kurungan, kami secara eksplisit menunjukkan bahawa ia adalah literal komposit dan bukan sebahagian daripada sintaks gelung for.

Atas ialah kandungan terperinci Mengapa Pergi Melempar Ralat Semasa Memulakan Struct dalam For Loop?. 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