Цикл for - одна з найпоширеніших інструкцій для багаторазового виконання якоїсь логіки.
У Go він складається з ключового слова for, заголовка та блоку коду, який містить тіло циклу, укладене у фігурні дужки.
Заголовок складається з трьох компонентів, розділених крапками з комою ;: init, умова та post.
for init; condition; post {
// loop body - code that is executed repeatedly as long as the condition is true
}
Зауваження: На відміну від інших мов, три компоненти заголовка не оточені круглими дужками (()).
Насправді, такі дужки призведуть до помилки компіляції.
Однак фігурні дужки ({ }) навколо тіла циклу потрібні завжди.
for: прикладКомпонент init зазвичай створює змінну-лічильник, компонент умова перевіряє, чи продовжувати цикл чи зупинити його, а компонент post зазвичай збільшує лічильник наприкінці кожного повторення.
for i := 1; i < 10; i++ {
fmt.Println(i)
}
Цей цикл виведе числа від 1 до 9 (включно з 9).
Крок часто задають інструкцією інкременту або декременту, як показано в прикладі вище.
Ми завзяті спостерігачі за птахами й ведемо облік того, скільки птахів завітало до нашого саду. Зазвичай ми ведемо лічбу птахів у записнику, але, щоб зручніше працювати з даними, ми оцифрували підрахунки птахів за останні тижні.
Почнімо аналізувати дані із загального огляду. Зʼясуймо, скільки птахів ми нарахували загалом відтоді, як почали вести свої записи.
Реалізуйте функцію TotalBirdCount, яка приймає зріз int, що містить кількість птахів за кожен день.
Вона повинна повернути загальну кількість птахів, яких ми нарахували.
birdsPerDay := []int{2, 5, 0, 7, 4, 1, 3, 0, 2, 5, 0, 1, 3, 1}
TotalBirdCount(birdsPerDay)
// => 34
Тепер, коли в нас є загальне уявлення про підрахунки птахів, хочеться зробити докладніший аналіз.
Реалізуйте функцію BirdsInWeek, яка приймає зріз підрахунків птахів за днями та номер тижня.
Вона повертає загальну кількість птахів, яких ми нарахували за цей конкретний тиждень. Можна припускати, що тижні завжди обліковані повністю.
birdsPerDay := []int{2, 5, 0, 7, 4, 1, 3, 0, 2, 5, 0, 1, 3, 1}
BirdsInWeek(birdsPerDay, 2)
// => 12
Ми зрозуміли, що весь час, поки ми намагалися вести облік птахів, один птах ховався в далекому куточку саду.
Ми зʼясували, що цей птах завжди проводив у нашому саду кожен другий день.
Ми не знаємо точно, де він був у проміжках між цими днями, але точно не в нашому саду.
Інтуїція спостерігача за птахами також підказує, що цей птах був у нашому саду першого дня, який ми записали.
З огляду на цю нову інформацію напишіть функцію FixBirdCountLog, яка приймає як аргумент зріз підрахунків птахів за днями та повертає цей зріз після виправлення помилки в підрахунку.
birdsPerDay := []int{2, 5, 0, 7, 4, 1}
FixBirdCountLog(birdsPerDay)
// => [3 5 1 7 5 1]
Зареєструйтеся на Exercism, щоб вивчати й опановувати Go, а також 34 концепції165 вправ та справжнє наставництво від людей, і все це безкоштовно.