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.