A for ciklus az egyik leggyakrabban használt utasítás, amellyel ismételten végrehajthatunk valamilyen logikát.
Go-ban a for kulcsszóból, egy fejlécből és egy kódblokkból áll, amely a ciklus törzsét tartalmazza kapcsos zárójelek között.
A fejléc 3 komponensből áll, amelyeket pontosvessző ; választ el: init, feltétel és post.
for init; condition; post {
// loop body - code that is executed repeatedly as long as the condition is true
}
Megjegyzés: Más nyelvektől eltérően a fejléc három komponensét nem veszi körül zárójel ().
Sőt, ha mégis odaírsz egy ilyen zárójelet, az fordítási hiba.
A ciklus törzsét körülvevő kapcsos zárójelek { } viszont mindig kötelezőek.
Az init komponens általában beállít egy számlálóváltozót, a feltétel ellenőrzi, hogy folytatódjon-e a ciklus vagy álljon le, a post komponens pedig általában növeli a számlálót minden ismétlés végén.
for i := 1; i < 10; i++ {
fmt.Println(i)
}
Ez a ciklus kiírja az 1-től 9-ig terjedő számokat (a 9-et is beleértve).
A lépésköz megadása gyakran növelő vagy csökkentő utasítással történik, ahogy a fenti példa is mutatja.
Szenvedélyes madárfigyelő vagy, aki nyomon követi, hány madár járt a kertedben. A madarak megszámolásához általában egy jegyzetfüzetbe írt rovátkákat használsz, de hogy jobban dolgozhass az adataiddal, digitalizáltad az elmúlt hetek madárszámait.
Kezdjük az adatelemzést egy átfogó képpel. Nézd meg, összesen hány madarat számoltál meg, mióta elkezdted vezetni a naplódat.
Készíts egy TotalBirdCount függvényt, amely egy int-ekből álló szeletet fogad el, benne a napi madárszámmal.
A függvény adja vissza a megszámolt madarak összlétszámát.
birdsPerDay := []int{2, 5, 0, 7, 4, 1, 3, 0, 2, 5, 0, 1, 3, 1}
TotalBirdCount(birdsPerDay)
// => 34
Most, hogy már van egy általános képed a madárszámaidról, szeretnél egy részletesebb elemzést is készíteni.
Készíts egy BirdsInWeek függvényt, amely a napi madárszámokat tartalmazó szeletet és egy hét sorszámát fogadja el.
A függvény adja vissza, összesen hány madarat számoltál meg abban az adott héten. Feltételezheted, hogy a heteket mindig teljesen nyomon követed.
birdsPerDay := []int{2, 5, 0, 7, 4, 1, 3, 0, 2, 5, 0, 1, 3, 1}
BirdsInWeek(birdsPerDay, 2)
// => 12
Rájöttél, hogy amíg a madarakat próbáltad nyomon követni, végig volt egy madár, amely a kert egy távoli sarkában rejtőzött.
Kiszámoltad, hogy ez a madár mindig minden második napot a kertedben töltött.
Azt nem tudod pontosan, hol volt a köztes napokon, de az biztos, hogy nem a kertedben.
A madárfigyelői megérzésed azt is súgja, hogy a madár a listádon szereplő első napon a kertedben volt.
Ezekkel az új információkkal írj egy FixBirdCountLog függvényt, amely argumentumként a naponta megszámolt madarak szeletét kapja, és visszaadja a szeletet a számolási hiba kijavítása után.
birdsPerDay := []int{2, 5, 0, 7, 4, 1}
FixBirdCountLog(birdsPerDay)
// => [3 5 1 7 5 1]
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Go nyelvet 34 fogalom165 feladat segítségével, valódi emberi mentorálással, mindez ingyen.