Найти Π² Π”Π·Π΅Π½Π΅
Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста

πŸƒ Π‘Π°ΠΌΠΎΡƒΡ‡ΠΈΡ‚Π΅Π»ΡŒ ΠΏΠΎ Go для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…. Π§Π°ΡΡ‚ΡŒ 5. УсловныС конструкции if-else ΠΈ switch-case. Π¦ΠΈΠΊΠ» for. Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΈ бСсконСчныС Ρ†ΠΈΠΊΠ»Ρ‹

ОглавлСниС

Π’ этой части самоучитСля ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ ΠΏΡ€ΠΎ составныС части любой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ – условныС конструкции ΠΈ Ρ†ΠΈΠΊΠ»Ρ‹, рассмотрим особСнности ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅ΡˆΠΈΠΌ нСсколько Π·Π°Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ для закрСплСния тСорСтичСского ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°.

← Π§Π°ΡΡ‚ΡŒ 4

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΡ… прСобразования. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.

УсловныС конструкции

УсловныС конструкции ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для измСнСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² зависимости ΠΎΡ‚ Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… условий. Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ выполнСния, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ошибки ΠΈ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ сцСнарии.

Π’ Go Π΅ΡΡ‚ΡŒ Π΄Π²Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° для создания условных конструкций – if-else ΠΈ switch-case. Познакомимся с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΈΠ· Π½ΠΈΡ… ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if-else

   ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if-else Π² Go
ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if-else Π² Go

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if-else Π² Go ΠΈΠΌΠ΅Π΅Ρ‚ стандартный для ΠΌΠ½ΠΎΠ³ΠΈΡ… языков программирования синтаксис:

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° if-else ΠΌΠΎΠΆΠ½ΠΎ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ число Π½Π° Ρ‡Ρ‘Ρ‚Π½ΠΎΡΡ‚ΡŒ:

Π­Ρ‚Ρƒ ΠΆΠ΅ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ объявлСниС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° if (if short statement):

Иногда Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… условий. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ else if, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ провСряСт условиС Π² случаС лоТности ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ. ΠŸΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρƒ else if Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для опрСдСлСния Ρ‚ΠΈΠΏΠ° числа, Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹:

Π‘ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ if-elseif-else ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

Условия Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, Ρ€Π°Π±ΠΎΡ‚Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… основана Π½Π° Π·Π°ΠΊΠΎΠ½Π°Ρ… Π°Π»Π³Π΅Π±Ρ€Ρ‹ Π»ΠΎΠ³ΠΈΠΊΠΈ. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘ΠΌ ΠΊΠΎΠ΄, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π²Π° чисСл Π½Π° Ρ‡Ρ‘Ρ‚Π½ΠΎΡΡ‚ΡŒ:

Π’Π°ΠΊΠΆΠ΅ допускаСтся созданиС Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… условий. Но стоит ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ влоТСнности услоТняСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ затрудняСт Π΅Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅.

НапримСр, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… условий ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΡƒΡŽ систСму Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ:

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌ Π²Π²ΠΎΠ΄ Π»ΠΎΠ³ΠΈΠ½Π° ΠΈ Π΄Π°Π»Π΅Π΅ сравниваСм Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ со строкой "Gosha". Π’ случаС соотвСтствия Π»ΠΎΠ³ΠΈΠ½Π° Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ сообщСниС ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ Π²Π²ΠΎΠ΄ пароля, ΠΈΠ½Π°Ρ‡Π΅ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ "НСвСрный Π»ΠΎΠ³ΠΈΠ½". ПослС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ пароля Π½Π° равСнство строкС "ilovego" ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌ сообщСниС Π»ΠΈΠ±ΠΎ ΠΎΠ± ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ Π²Ρ…ΠΎΠ΄Π΅, Π»ΠΈΠ±ΠΎ ΠΎ Π½Π΅Π²Π΅Ρ€Π½ΠΎΠΌ ΠΏΠ°Ρ€ΠΎΠ»Π΅.

πŸ‘¨β€πŸ’» Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Go Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°

Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Go Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Β»

πŸŽ“ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Go для собСса

ΠŸΠΎΠ΄Ρ‚ΡΠ½ΡƒΡ‚ΡŒ свои знания ΠΏΠΎ Go Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Go для собСса»

🧩 Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ Go

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ Go для ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ GoΒ»

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок

Π’ Go ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ это ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ strconv.Atoi, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π²Π° значСния – Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки Π² число ΠΈ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ наличия ошибки ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сравниваСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ err с Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ (nil). Если err != nil, Ρ‚ΠΎ это Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ошибки, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Π±Π»ΠΎΠΊΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° if.

Switch-case

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ switch-case выполняСт Ρ‚Π΅ ΠΆΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ if-else, Π½ΠΎ позволяСт Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ условныС выраТСния Π² Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅. Он состоит ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов: switch – для создания ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, case – для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ условий (Π°Π½Π°Π»ΠΎΠ³ if), default – для задания значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² случаС лоТности ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… условий (Π°Π½Π°Π»ΠΎΠ³ else), fallthrough – для ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ выполнСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠ° case.

Бинтаксис switch-case выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ примСнСния switch-case с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ:

ВсС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ case Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Но Ρ‡Ρ‚ΠΎ Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡ‡Π΅ΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ условиС? Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово fallthrough. Оно ставится Π² ΠΊΠΎΠ½Ρ†Π΅ Π±Π»ΠΎΠΊΠ° case ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ case Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ нСзависимо ΠΎΡ‚ истинности своСго условия.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ switch-case Π±Π΅Π· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈ с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом fallthrough:

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ:

Π¦ΠΈΠΊΠ» for

   Π¦ΠΈΠΊΠ» for Π² Go
Π¦ΠΈΠΊΠ» for Π² Go

Π¦ΠΈΠΊΠ»Ρ‹ наряду с условными конструкциями ΡΠ²Π»ΡΡŽΡ‚ΡΡ составными частями Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ количСство Ρ€Π°Π·. Π­Ρ‚ΠΎ Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со структурами Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ массива ΠΈΠ»ΠΈ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΌΠ°ΠΏΡ‹.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ элСмСнтом Ρ†ΠΈΠΊΠ»Π° являСтся ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ – пСрСмСнная, которая ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ измСняСт своС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… языков, Go для создания Ρ†ΠΈΠΊΠ»Π° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ for. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС Π΅Π³ΠΎ синтаксис выглядит Ρ‚Π°ΠΊ:

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° посчитаСм ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Ρ‹ чисСл ΠΎΡ‚ 1 Π΄ΠΎ 9 с использованиСм Ρ†ΠΈΠΊΠ»Π°:

Для достиТСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ†ΠΈΠΊΠ»Π°. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ шаг ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ значСния Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС, Π½ΠΎ Π² Ρ‚Π°ΠΊΠΎΠΌ случаС Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ большС ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ:

Π¨Π°Π³ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ. ВмСсто этого ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ любоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:

Как Π±Ρ‹Π»ΠΎ упомянуто Ρ€Π°Π½Π΅Π΅, Ρ†ΠΈΠΊΠ»Ρ‹ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ массивам. Π­Ρ‚ΠΎ рСализуСтся с использованиСм ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова range, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π°Π΄Π°Π΅Ρ‚ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌΡ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Ρ‚Π°ΠΊΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ являСтся индСкс, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ – Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

ΠŸΡ€ΠΈ объявлСнии Ρ†ΠΈΠΊΠ»Π° for Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. Вакая ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° нСслучайно, вСдь это Π΄Π΅Π»Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Ρ†ΠΈΠΊΠ»ΠΎΠ² – while (Ρ†ΠΈΠΊΠ» Β«ΠΏΠΎΠΊΠ°Β»). Он выполняСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ условиС истинно.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅ΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ для подсчСта ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² чисСл ΠΎΡ‚ 1 Π΄ΠΎ 9 Π² стилС Ρ†ΠΈΠΊΠ»Π° while:

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ‚Π°ΠΊΠΈΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ стоит ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ условия Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΈΠ½Π°Ρ‡Π΅ Π΅ΡΡ‚ΡŒ риск ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ бСсконСчный Ρ†ΠΈΠΊΠ», способный привСсти ΠΊ зависанию ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΠΌΡƒ ΠΊΡ€Π°Ρ…Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Помимо ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ условия Π΅ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° – ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ break. Он ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π°. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Ρ‹ чисСл ΠΎΡ‚ 1 Π΄ΠΎ 4 Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΡ€ΠΈ этом break обСспСчиваСт досрочный Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· for ΠΏΡ€ΠΈ достиТСнии ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ числа 5:

НСсмотря Π½Π° ΠΊΠ°ΠΆΡƒΡ‰ΡƒΡŽΡΡ Π½Π΅ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½ΠΎΡΡ‚ΡŒ, бСсконСчныС Ρ†ΠΈΠΊΠ»Ρ‹ Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ для обСспСчСния бСспСрСбойной Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π§Ρ‚ΠΎΠ±Ρ‹ это ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, напишСм ΠΊΠΎΠ΄ для Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ³ΠΎ считывания Π΄Π°Π½Π½Ρ‹Ρ… с консоли Π΄ΠΎ Π²Π²ΠΎΠ΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ символа:

Но Ссли Π΅ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Ρ†ΠΈΠΊΠ», Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‰ΠΈΠΉ! И ΠΎΠ½ Π΅ΡΡ‚ΡŒ – это ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ continue, досрочно пСрСходящий ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. Он Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π΅Π½ для пропуска ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. НапримСр, ΠΊΠΎΠ΄ Π½ΠΈΠΆΠ΅ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Π½Π° экран ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Ρ‹ всСх чисСл ΠΎΡ‚ 1 Π΄ΠΎ 20, Π½Π΅ дСлящихся Π½Π° 3 ΠΈΠ»ΠΈ 7:

Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹

Π¦ΠΈΠΊΠ»Ρ‹, ΠΊΠ°ΠΊ ΠΈ условныС конструкции, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ инструмСнт для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… структур Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ n-ΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы, Π΄Π΅Ρ€Π΅Π²ΡŒΡ ΠΈ Π³Ρ€Π°Ρ„Ρ‹.

ΠŸΡ€ΠΎΡΡ‚Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° являСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° экран Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ умноТСния чисСл ΠΎΡ‚ 1 Π΄ΠΎ 10:

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ конструкциями всСгда стоит ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎΠ± ΠΈΡ… ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ влиянии Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ влияниС Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, обратимся ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ с Ρ‚Ρ€ΠΎΠΉΠ½Ρ‹ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ влоТСнности, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» выполняСтся n Ρ€Π°Π·, ΠΈ посчитаСм количСство ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ:

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ количСство ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ 1003, Π° Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС говорят, Ρ‡Ρ‚ΠΎ такая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ «порядка n Π² ΠΊΡƒΠ±Π΅Β» ΠΈΠ»ΠΈ O(n3). На ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… значСниях Ρ€Π°Π·Π½ΠΈΡ†Π° Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсущСствСнна, Π½ΠΎ ΡƒΠΆΠ΅ для n = 1000000 ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ исполнятся критичСски Π΄ΠΎΠ»Π³ΠΎ, Ρ‡Ρ‚ΠΎ нСдопустимо Π² условиях Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ стоит ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Π΄ΡƒΠΌΠ°Π½Π½ΠΎΠ³ΠΎ использования Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ эффСктивных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ².

Для знакомства с понятиСм слоТности Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² рСкомСндуСтся ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ АсимптотичСская ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²: Ρ‡Ρ‚ΠΎ Π·Π° Π·Π²Π΅Ρ€ΡŒ?

Π—Π°Π΄Π°Ρ‡ΠΈ

ΠŸΡ€ΠΈΡˆΠ»ΠΎ врСмя ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ·ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ Ρ‚Π΅ΠΎΡ€ΠΈΡŽ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ нСсколько нСслоТных Π·Π°Π΄Π°Ρ‡ Π½Π° условныС конструкции ΠΈ Ρ†ΠΈΠΊΠ»Ρ‹.

Π—Π°Π΄Π°Ρ‡Π° 1: Π“ΠΎΡˆΠ° учится ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ

   Π—Π°Π΄Π°Ρ‡Π° 1: Π“ΠΎΡˆΠ° учится ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ
Π—Π°Π΄Π°Ρ‡Π° 1: Π“ΠΎΡˆΠ° учится ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ

ΠŸΠ΅Ρ€Π²ΠΎΠΊΠ»Π°ΡΡΠ½ΠΈΠΊΡƒ Π“ΠΎΡˆΠ΅ Π½Π° ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ Π΄Π°Π»ΠΈ Π·Π°Π΄Π°Π½ΠΈΠ΅: ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ сумму всСх чисСл ΠΎΡ‚ 20 Π΄ΠΎ 500, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ дСлятся Π½Π° 6, ΠΈ ΠΏΡ€ΠΈ этом Π½Π΅ дСлятся Π½Π° 8. ΠŸΠΎΠΌΠΎΠ³ΠΈΡ‚Π΅ Π“ΠΎΡˆΠ΅ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту Π·Π°Π΄Π°Ρ‡Ρƒ.

РСшСниС:

Π—Π°Π΄Π°Ρ‡Π° 2: Π“ΠΎΡˆΠ° ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π°Π΅Ρ‚ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€

   Π—Π°Π΄Π°Ρ‡Π° 2: Π“ΠΎΡˆΠ° ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π°Π΅Ρ‚ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€
Π—Π°Π΄Π°Ρ‡Π° 2: Π“ΠΎΡˆΠ° ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π°Π΅Ρ‚ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€

Π“ΠΎΡˆΠ° Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ сСбС Тизнь ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ собствСнный ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ Π½Π° языкС Go, Ρ‡Ρ‚ΠΎΠ±Ρ‹ быстро ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ числами.

Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅: Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС вводятся Π΄Π²Π° Ρ†Π΅Π»Ρ‹Ρ… числа, Π° Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ – ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… символов, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΡ… ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ: +, -, *, /

Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅: Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ примСнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊ числам, Π² случаС Π½Π΅Π²Π΅Ρ€Π½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° возвращаСтся сообщСниС: ««Ошибка, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Π΄Π²Π° Ρ†Π΅Π»Ρ‹Ρ… числа ΠΈ ΠΎΠ΄Π½Ρƒ ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… допустимых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ: +, -, *, /Β»

РСшСниС: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΡƒΡΠ»ΠΎΠ²Π½ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ switch-case

Π—Π°Π΄Π°Ρ‡Π° 3: Π“ΠΎΡˆΠ° учится ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Π² ΡˆΠ°Ρ…ΠΌΠ°Ρ‚Ρ‹

   Π—Π°Π΄Π°Ρ‡Π° 3: Π“ΠΎΡˆΠ° учится ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Π² ΡˆΠ°Ρ…ΠΌΠ°Ρ‚Ρ‹
Π—Π°Π΄Π°Ρ‡Π° 3: Π“ΠΎΡˆΠ° учится ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Π² ΡˆΠ°Ρ…ΠΌΠ°Ρ‚Ρ‹

Π“ΠΎΡˆΠ° Ρ€Π΅ΡˆΠΈΠ» ΡΡ‹Π³Ρ€Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Ρ‚ΠΈΡŽ Π² ΡˆΠ°Ρ…ΠΌΠ°Ρ‚Ρ‹ со своим одноклассником, Π½ΠΎ Π·Π°Π±Ρ‹Π», ΠΊΠ°ΠΊ Ρ…ΠΎΠ΄ΠΈΡ‚ ладья. ΠŸΠΎΠΌΠΎΠ³ΠΈΡ‚Π΅ Π“ΠΎΡˆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈ ладья Π·Π° ΠΎΠ΄ΠΈΠ½ Ρ…ΠΎΠ΄ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ с ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Π½Π° Π²Ρ‚ΠΎΡ€ΡƒΡŽ.

Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅: Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ числа ΠΎΡ‚ 1 Π΄ΠΎ 8 – Π½ΠΎΠΌΠ΅Ρ€ столбца ΠΈ Π½ΠΎΠΌΠ΅Ρ€ строки сначала для ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ, Π° ΠΏΠΎΡ‚ΠΎΠΌ для Π²Ρ‚ΠΎΡ€ΠΎΠΉ.

Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅: "YES", Ссли ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π·Π° ΠΎΠ΄ΠΈΠ½ Ρ…ΠΎΠ΄ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΡƒΡŽ, ΠΈΠ½Π°Ρ‡Π΅ "NO".

РСшСниС: для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ условия достаточно ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Ρ‹ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΊΠ»Π΅Ρ‚ΠΎΠΊ ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ ΠΈ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ. Если хотя Π±Ρ‹ ΠΎΠ΄Π½Π° ΠΏΠ°Ρ€Π° совпадаСт, Ρ‚ΠΎ ладья смоТСт ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ, ΠΈΠ½Π°Ρ‡Π΅ – Π½Π΅Ρ‚.

Π—Π°Π΄Π°Ρ‡Π° 4: Π“ΠΎΡˆΠ° считаСт Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ

   Π—Π°Π΄Π°Ρ‡Π° 4: Π“ΠΎΡˆΠ° считаСт Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ
Π—Π°Π΄Π°Ρ‡Π° 4: Π“ΠΎΡˆΠ° считаСт Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ

Π“ΠΎΡˆΠ΅ стало интСрСсно, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ сумму Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΉ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ числа n. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅ΠΌ Π΅ΠΌΡƒ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту Π·Π°Π΄Π°Ρ‡Ρƒ, написав Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π½Π° Go.

Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅: Ρ†Π΅Π»ΠΎΠ΅ число n.

Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅: сумма Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΉ числа n.

РСшСниС: достаточно Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ n Π½Π° всС числа ΠΎΡ‚ 1 Π΄ΠΎ n / 2, Π½Π΅ Π·Π°Π±Ρ‹Π² ΡƒΡ‡Π΅ΡΡ‚ΡŒ само число n.

Π—Π°Π΄Π°Ρ‡Π° 5: Π“ΠΎΡˆΠ° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π·Π°Π΄Π°Ρ‡Ρƒ со Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΎΠΉ

   Π—Π°Π΄Π°Ρ‡Π° 5: Π“ΠΎΡˆΠ° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π·Π°Π΄Π°Ρ‡Ρƒ со Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΎΠΉ
Π—Π°Π΄Π°Ρ‡Π° 5: Π“ΠΎΡˆΠ° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π·Π°Π΄Π°Ρ‡Ρƒ со Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΎΠΉ

Π“ΠΎΡˆΠ΅ ΠΏΠΎΡ€ΡƒΡ‡ΠΈΠ»ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ для дСтской ΠΈΠ³Ρ€Ρ‹ FizzBuzz, ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅: ΠΈΠ³Ρ€ΠΎΠΊΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ числа подряд, Ссли число дСлится Π½Π° 3, Π΅Π³ΠΎ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ Π½Π° Β«FizzΒ», Ссли дСлится Π½Π° 5, Ρ‚ΠΎ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ Π½Π° Β«BuzzΒ», Π° Ссли дСлится Π½Π° 3 ΠΈ Π½Π° 5 ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, Ρ‚ΠΎ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ Π½Π° Β«FizzBuzzΒ». Π’Π°ΡˆΠ° Π·Π°Π΄Π°Ρ‡Π° вывСсти всС числа ΠΎΡ‚ 1 Π΄ΠΎ 200 ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ этой ΠΈΠ³Ρ€Ρ‹.

РСшСниС: сразу оговоримся, Ρ‡Ρ‚ΠΎ Ρƒ этой Π·Π°Π΄Π°Ρ‡ΠΈ Π΅ΡΡ‚ΡŒ нСсколько Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ. Π‘Π°ΠΌΠΎΠ΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠ΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² рассмотрСнии всСх Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… случаСв, для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… выводится ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ строка. Π’ прСдставлСнном здСсь Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄: ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ Ρ†ΠΈΠΊΠ»Π° создаСтся строка, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ приписываСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, зависящСС ΠΎΡ‚ дСлимости ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π½Π° 3 ΠΈ 5. Если ΠΎΠ½ Π½Π΅ дСлится Π½ΠΈ Π½Π° ΠΎΠ΄Π½ΠΎ ΠΈΠ· этих чисСл, Ρ‚ΠΎ ΠΊ строкС ΠΏΡ€ΠΈΠΏΠΈΡˆΠ΅Ρ‚ΡΡ строковоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

ΠŸΠΎΠ΄Π²Π΅Π΄Ρ‘ΠΌ ΠΈΡ‚ΠΎΠ³ΠΈ

Π’ этой части самоучитСля ΠΏΠΎ Go ΠΌΡ‹ познакомились с Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ понятиями Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ – условными конструкциями ΠΈ Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ. Π˜Ρ… ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π² дальнСйшСм ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π³ΠΈΠ±ΠΊΠΈΠ΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠΊΠ΅ рассмотрим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ ΠΈ defer, Π° Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΏΠΎ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΈ Π·Π°ΠΊΡ€Π΅ΠΏΠΈΠΌ Ρ‚Π΅ΠΎΡ€ΠΈΡŽ интСрСсными Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ.

***

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ самоучитСля

  1. УсловныС конструкции if-else ΠΈ switch-case. Π¦ΠΈΠΊΠ» for. Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΈ бСсконСчныС Ρ†ΠΈΠΊΠ»Ρ‹.