Sobes.tech
Junior — Middle

Lehetséges ciklust futtatni egy tömbön vagy listán, amelyet paraméterek nélkül deklaráltak?

sobes.tech MI

Válasz az MI-től

Go nyelvben a tömbök és a szeletek (slice) szigorúan meghatározott típusúak, beleértve az elemtípusukat és a hosszukat (a tömbök esetében). Ha egy tömböt hossz megadása nélkül deklarálsz, például var arr []int, akkor az egy szelet, nem tömb. A for range ciklus problémamentesen végrehajtható egy szelet felett.

Ha viszont egy tömböt hossz megadása nélkül deklarálsz, például arr := [...]int{1,2,3}, akkor a hosszát a fordító határozza meg, és rajta is lehet iterálni.

Azonban, ha egy tömböt semmilyen paraméterrel nem deklarálsz, például var arr [], az szintaktikailag helytelen Go-ban — a típusnak teljesen meg kell lennie adva.

Helyes ciklus példa egy szelet felett:

arr := []int{1, 2, 3}
for i, v := range arr {
    fmt.Println(i, v)
}

Így végrehajtható ciklus tömb vagy szelet felett, ha a típus és a hossz (a tömb esetében) ismert. A paraméter nélküli deklarálás nem lehetséges.