go kerdes

Az alabbi all egy if feltetelnel:

if x > 3 {
rows, err := db.Query("select uid, username from user")
}

....

for rows.Next() {
....
}

a problema csak az, hogy mivel az if-en belul szerepel eloszor a 'rows' valtozo, ezert nem latszik az if-en kivul. Gondoltam, hogy akkor a program elejen deklaraljuk. Nade hogyan?

A https://golang.org/pkg/database/sql/#DB.Query szerint *Rows a tipusa. Nade, a https://golang.org/pkg/database/sql/#Rows meg azt mondja, hogy

type Rows struct {
// contains filtered or unexported fields
}

Namost akkor hogyan kene a rows valtozot deklaralni?

Hozzászólások

Ha az if-en belül hozod létre, akkor le tud futni úgy a program, hogy nincs létrehozva (null vagy definiálatlan lenne az értéke, nem tudom GO-ban lehetséges-e ilyen). Tehát nincs értelme az if-en kívül használni a változót. És nem is lehet, és ez így van jól.

Teljesen jól van így, egy olyan dolgon akarsz végig lépkedni, ami lehet, hogy nem is létezik.
Tedd ifen belülre a feldolgozást is.