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
Barbara Streisandasal
2024-12-31 17:48:09423semak imbas

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
}

Mempermudahkan kod, kami mendapat:

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

Kod ini terhasil dalam ralat berikut:

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

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
}

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!

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