π¬ Π§ΡΠΎ ΡΡΠΎ Π²ΠΎΠΎΠ±ΡΠ΅ ΡΠ°ΠΊΠΎΠ΅? Π£ΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ β ΡΡΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡ Ρ ΠΎΠ΄ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΈΠΌ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ: Β«Π΅ΡΠ»ΠΈ A, ΡΠΎ ΡΠ΄Π΅Π»Π°ΠΉ BΒ», ΠΈΠ»ΠΈ Β«Π²ΡΠΏΠΎΠ»Π½ΡΠΉ C Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ ΡΡΠ°Π½Π΅Ρ DΒ».
Π ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ ΡΡ ΡΠΎΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡ ΡΠ°ΠΊΡΡ Π»ΠΎΠ³ΠΈΠΊΡ:
- ΠΡΠ»ΠΈ ΠΈΠ΄ΡΡ Π΄ΠΎΠΆΠ΄Ρ β Π±Π΅ΡΡΡΡ Π·ΠΎΠ½Ρ.
 - ΠΠΎΠΊΠ° Π½Π΅ Π½Π°ΡΡΡΠΏΠΈΡ ΠΏΠΎΠ»Π½ΠΎΡΡ β ΠΏΡΠ°Π·Π΄Π½ΡΠ΅ΡΡ.
 
Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ ΠΈ ΡΠΈΠΊΠ»ΠΎΠ². ΠΠ°Π²Π°ΠΉ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΡ.
π§ Π£ΡΠ»ΠΎΠ²Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ
Π£ΡΠ»ΠΎΠ²Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΊΠΎΠ΄ ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π΅ΠΊΠΎΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ (Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅).
if
x := 10
if x > 5 {
    fmt.Println("x Π±ΠΎΠ»ΡΡΠ΅ 5")
}
ΠΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π±Π»ΠΎΠΊ else, Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠΎ-ΡΠΎ Π΄ΡΡΠ³ΠΎΠ΅ Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅:
if x%2 == 0 {
    fmt.Println("x β ΡΡΡΠ½ΠΎΠ΅")
} else {
    fmt.Println("x β Π½Π΅ΡΡΡΠ½ΠΎΠ΅")
}
ΠΠΎΠΏΡΡΡΠΈΠΌΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΡΡΠΌΠΎ Π²Π½ΡΡΡΠΈ if:
if y := 7; y < 10 {
    fmt.Println("y ΠΌΠ΅Π½ΡΡΠ΅ 10")
}
switch
switch β ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ± Π²ΡΠ±ΠΎΡΠ° ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
 Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ². ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΈΡΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ if-else, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ switch.
day := "ΡΡΠ΅Π΄Π°"
switch day {
case "ΠΏΠΎΠ½Π΅Π΄Π΅Π»ΡΠ½ΠΈΠΊ":
    fmt.Println("ΠΠ°ΡΠ°Π»ΠΎ Π½Π΅Π΄Π΅Π»ΠΈ")
case "ΠΏΡΡΠ½ΠΈΡΠ°":
    fmt.Println("ΠΠΎΡΡΠΈ Π²ΡΡ
ΠΎΠ΄Π½ΡΠ΅")
default:
    fmt.Println("ΠΠ±ΡΡΠ½ΡΠΉ Π΄Π΅Π½Ρ")
}
switchΠ°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ βbreakΠΏΠΈΡΠ°ΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ.- ΠΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ:
 
switch day {
case "ΡΡΠ±Π±ΠΎΡΠ°", "Π²ΠΎΡΠΊΡΠ΅ΡΠ΅Π½ΡΠ΅":
    fmt.Println("ΠΡΡ
ΠΎΠ΄Π½ΠΎΠΉ!")
}
π Π¦ΠΈΠΊΠ»Ρ
Π¦ΠΈΠΊΠ»Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ²Π΅ΡΡΠΈ Π½Π° ΡΠΊΡΠ°Π½ ΡΠΈΡΠ»Π° ΠΎΡ 1 Π΄ΠΎ 10 ΠΈΠ»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π²Π²ΠΎΠ΄, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ Π²Π²Π΅Π΄ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
Π Go Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠΈΠΊΠ» β for, Π½ΠΎ ΠΎΠ½ ΡΠΌΠ΅Π΅Ρ Π²ΡΡ.
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ for
for i := 0; i < 5; i++ {
    fmt.Println(i)
}
ΠΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅:
i := 0β Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅i < 5β ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΡi++β ΡΠ°Π³ (ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌiΠ½Π° 1)
ΠΠ°ΠΊ while
x := 5
for x > 0 {
    fmt.Println(x)
    x--
}
ΠΡΠΎΡ ΡΠΈΠΊΠ» ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΏΠΎΠΊΠ° x Π±ΠΎΠ»ΡΡΠ΅ Π½ΡΠ»Ρ.
ΠΠ΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠΈΠΊΠ»
for {
    fmt.Println("ΠΠ΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΡΡΡ")
    break // ΠΠ΅ Π·Π°Π±ΡΠ΄Ρ Π²ΡΠΉΡΠΈ ;)
}
β Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠΌ
ΠΠ½ΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΠΊΠ»Π°:
breakβ Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΡΠΈΠΊΠ» ΠΈΠ»ΠΈswitch.continueβ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΡΠ΅ΠΊΡΡΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΡ ΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ.
for i := 1; i <= 5; i++ {
    if i == 3 {
        continue // ΠΡΠΎΠΏΡΡΠΊΠ°Π΅ΠΌ 3
    }
    fmt.Println(i)
}
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ:
1
2
4
5
π Π¦ΠΈΠΊΠ» for range β ΠΈΡΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡΠΌ
for range β ΠΈΠ΄ΠΈΠΎΠΌΠ°ΡΠΈΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² Go. Π Π°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ, ΡΠ»Π°ΠΉΡΠ°ΠΌΠΈ, ΠΊΠ°ΡΡΠ°ΠΌΠΈ, ΡΡΡΠΎΠΊΠ°ΠΌΠΈ ΠΈ ΠΊΠ°Π½Π°Π»Π°ΠΌΠΈ.
ΠΡΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎ ΡΠ»Π°ΠΉΡΠ°ΠΌ ΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌ
package main
import "fmt"
func main() {
    numbers := []int{10, 20, 30, 40}
    
    // ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡ, ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
    for index, value := range numbers {
        fmt.Printf("ΠΠ½Π΄Π΅ΠΊΡ %d: Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ %d\n", index, value)
    }
    
    // Π’ΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΠΌ ΠΈΠ½Π΄Π΅ΠΊΡ)
    for _, value := range numbers {
        fmt.Printf("ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅: %d\n", value)
    }
    
    // Π’ΠΎΠ»ΡΠΊΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ
    for index := range numbers {
        fmt.Printf("ΠΠ½Π΄Π΅ΠΊΡ: %d\n", index)
    }
}
ΠΡΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎ ΠΊΠ°ΡΡΠ°ΠΌ
students := map[string]int{
    "ΠΠ»ΠΈΡΠ°": 95,
    "ΠΠΎΠ±":   87,
    "ΠΠ°ΡΡ":  92,
}
for name, score := range students {
    fmt.Printf("%s ΠΏΠΎΠ»ΡΡΠΈΠ» %d Π±Π°Π»Π»ΠΎΠ²\n", name, score)
}
ΠΡΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎ ΡΡΡΠΎΠΊΠ°ΠΌ (rune Π·Π° rune)
text := "ΠΡΠΈΠ²Π΅Ρ"
for index, char := range text {
    fmt.Printf("ΠΠΎΠ·ΠΈΡΠΈΡ %d: ΡΠΈΠΌΠ²ΠΎΠ» %c\n", index, char)
}
π‘
for rangeΠ°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ UTF-8 ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΡΡΡΡΠΊΠΈΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ.
π defer β ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅
defer β ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠΎ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½Π°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π² Go.
ΠΠ°Π·ΠΎΠ²ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ
package main
import "fmt"
func main() {
    fmt.Println("ΠΠ°ΡΠ°Π»ΠΎ")
    defer fmt.Println("ΠΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅")
    fmt.Println("Π‘Π΅ΡΠ΅Π΄ΠΈΠ½Π°")
    fmt.Println("ΠΠΎΡΡΠΈ ΠΊΠΎΠ½Π΅Ρ")
    // defer Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡ Π·Π΄Π΅ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ
}
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ:
ΠΠ°ΡΠ°Π»ΠΎ
Π‘Π΅ΡΠ΅Π΄ΠΈΠ½Π°
ΠΠΎΡΡΠΈ ΠΊΠΎΠ½Π΅Ρ
ΠΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅
ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ defer (Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅)
func example() {
    defer fmt.Println("ΠΠ΅ΡΠ²ΡΠΉ defer")
    defer fmt.Println("ΠΡΠΎΡΠΎΠΉ defer")
    defer fmt.Println("Π’ΡΠ΅ΡΠΈΠΉ defer")
    fmt.Println("ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠ΄")
}
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ:
ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠ΄
Π’ΡΠ΅ΡΠΈΠΉ defer
ΠΡΠΎΡΠΎΠΉ defer
ΠΠ΅ΡΠ²ΡΠΉ defer
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ β ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ
package main
import (
    "fmt"
    "os"
)
func readFile(filename string) error {
    file, err := os.Open(filename)
    if err != nil {
        return err
    }
    defer file.Close() // β
 Π€Π°ΠΉΠ» Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎ Π·Π°ΠΊΡΠΎΠ΅ΡΡΡ
    
    // Π Π°Π±ΠΎΡΠ°Π΅ΠΌ Ρ ΡΠ°ΠΉΠ»ΠΎΠΌ...
    fmt.Println("Π€Π°ΠΉΠ» ΠΎΡΠΊΡΡΡ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ")
    
    // ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π·Π΄Π΅ΡΡ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ°,
    // file.Close() Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡ
    return nil
}
ΠΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ defer
- ΠΠ°ΠΊΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ ΡΠ΅ΡΠ΅Π²ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ
 - ΠΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ (mutex unlock)
 - ΠΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ
 - ΠΡΠΈΡΡΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ²
 - ΠΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅ panic
 
β οΈ
deferΠ²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄Π°ΠΆΠ΅ ΠΏΡΠΈpanic, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠΌ ΠΎΡΠΈΡΡΠΊΠΈ ΡΠ΅ΡΡΡΡΠΎΠ².
π· ΠΠ΅ΡΠΊΠΈ (labels) Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΈΠΊΠ»Π°ΠΌΠΈ
ΠΠ΅ΡΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌΠΈ ΡΠΈΠΊΠ»Π°ΠΌΠΈ, ΡΠΊΠ°Π·ΡΠ²Π°Ρ ΡΠΎΡΠ½ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠΈΠΊΠ» Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ΅ΡΠ²Π°ΡΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ.
package main
import "fmt"
func findInMatrix() {
    matrix := [][]int{
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9},
    }
    
    target := 5
    
OuterLoop: // ΠΠ΅ΡΠΊΠ° Π΄Π»Ρ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΡΠΈΠΊΠ»Π°
    for i, row := range matrix {
        for j, value := range row {
            if value == target {
                fmt.Printf("ΠΠ°ΠΉΠ΄Π΅Π½ΠΎ %d Π² ΠΏΠΎΠ·ΠΈΡΠΈΠΈ [%d][%d]\n", target, i, j)
                break OuterLoop // ΠΡΡ
ΠΎΠ΄ΠΈΠΌ ΠΈΠ· Π²ΡΠ΅Ρ
 ΡΠΈΠΊΠ»ΠΎΠ²
            }
        }
    }
}
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ continue Ρ ΠΌΠ΅ΡΠΊΠ°ΠΌΠΈ
func skipEvenRows() {
    matrix := [][]int{{1, 2}, {3, 4}, {5, 6}}
    
RowLoop:
    for i, row := range matrix {
        if i%2 == 0 {
            continue RowLoop // ΠΡΠΎΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΠ΅ΡΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ
        }
        for _, value := range row {
            fmt.Printf("%d ", value)
        }
        fmt.Println()
    }
}
π§ͺ ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ: ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π΄Π°Π½Π½ΡΡ
package main
import (
    "fmt"
    "strings"
)
func processStudentData() {
    students := map[string][]int{
        "ΠΠ»ΠΈΡΠ°": {95, 87, 92},
        "ΠΠΎΠ±":   {78, 85, 90},
        "ΠΠ°ΡΡ":  {88, 91, 89},
    }
    
    fmt.Println("π ΠΠ½Π°Π»ΠΈΠ· ΡΡΠΏΠ΅Π²Π°Π΅ΠΌΠΎΡΡΠΈ ΡΡΡΠ΄Π΅Π½ΡΠΎΠ²")
    fmt.Println(strings.Repeat("=", 40))
    
    for name, grades := range students {
        defer fmt.Printf("β
 ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° %s Π·Π°Π²Π΅ΡΡΠ΅Π½Π°\n", name)
        
        var total, count int
        var hasLowGrade bool
        
        fmt.Printf("\nπ€ Π‘ΡΡΠ΄Π΅Π½Ρ: %s\n", name)
        fmt.Print("π ΠΡΠ΅Π½ΠΊΠΈ: ")
        
        for i, grade := range grades {
            fmt.Printf("%d", grade)
            if i < len(grades)-1 {
                fmt.Print(", ")
            }
            
            total += grade
            count++
            
            if grade < 80 {
                hasLowGrade = true
            }
        }
        
        average := float64(total) / float64(count)
        fmt.Printf("\nπ Π‘ΡΠ΅Π΄Π½ΠΈΠΉ Π±Π°Π»Π»: %.1f\n", average)
        
        // ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΡΡΠ°ΡΡΡ ΡΡΡΠ΄Π΅Π½ΡΠ°
        switch {
        case average >= 90:
            fmt.Println("π Π‘ΡΠ°ΡΡΡ: ΠΡΠ»ΠΈΡΠ½ΠΈΠΊ")
        case average >= 80:
            fmt.Println("β Π‘ΡΠ°ΡΡΡ: Π₯ΠΎΡΠΎΡΠΈΡΡ")
        case hasLowGrade:
            fmt.Println("β οΈ  Π‘ΡΠ°ΡΡΡ: Π’ΡΠ΅Π±ΡΠ΅Ρ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ")
        default:
            fmt.Println("π Π‘ΡΠ°ΡΡΡ: Π£Π΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ")
        }
    }
}
func main() {
    processStudentData()
}
π‘ ΠΠ΄ΠΈΠΎΠΌΠ°ΡΠΈΡΠ½ΡΠ΅ Go ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ
Early Return (ΡΠ°Π½Π½ΠΈΠΉ Π²ΠΎΠ·Π²ΡΠ°Ρ)
func validateUser(user User) error {
    if user.Name == "" {
        return errors.New("ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ")
    }
    
    if user.Age < 0 {
        return errors.New("Π²ΠΎΠ·ΡΠ°ΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΌ")
    }
    
    if user.Email == "" {
        return errors.New("email ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»Π΅Π½")
    }
    
    // ΠΡΠ½ΠΎΠ²Π½Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ Π²ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΡΠΎΠΉΠ΄Π΅Π½Ρ
    return nil
}
Guard Clauses (Π·Π°ΡΠΈΡΠ½ΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ)
func processOrder(order *Order) error {
    // ΠΠ°ΡΠΈΡΠ½ΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ Π² Π½Π°ΡΠ°Π»Π΅
    if order == nil {
        return errors.New("Π·Π°ΠΊΠ°Π· Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ nil")
    }
    
    if len(order.Items) == 0 {
        return errors.New("Π·Π°ΠΊΠ°Π· Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΎΠ²Π°ΡΡ")
    }
    
    // ΠΡΠ½ΠΎΠ²Π½Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ
    // ...
    return nil
}
π‘ Π£ΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ β ΡΡΠΎ ΠΊΠ°ΡΠΊΠ°Ρ Π»ΡΠ±ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π£ΠΌΠ΅Π½ΠΈΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ β ΠΊΠ»ΡΡ ΠΊ ΡΠΈΡΠ°Π΅ΠΌΠΎΠΌΡ ΠΈ Π½Π°Π΄ΡΠΆΠ½ΠΎΠΌΡ ΠΊΠΎΠ΄Ρ.
π ΠΠ»Π°Π²Π½ΠΎΠ΅ ΠΈΠ· Π³Π»Π°Π²Ρ
- Π£ΡΠ»ΠΎΠ²Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ (
if,else,switch) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΊΠΎΠ΄ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ. - Π¦ΠΈΠΊΠ» 
forβ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°. for rangeβ ΠΈΠ΄ΠΈΠΎΠΌΠ°ΡΠΈΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡΠΌ Π² Go.deferβ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½Π°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π΄Π»Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΎΡΠΈΡΡΠΊΠΈ ΡΠ΅ΡΡΡΡΠΎΠ².- ΠΠ΅ΡΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΎΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌΠΈ ΡΠΈΠΊΠ»Π°ΠΌΠΈ.
 - Early return ΠΈ guard clauses Π΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠ°Π΅ΠΌΡΠΌ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΌ.
 - ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ 
breakΠΈcontinueΠ΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠΎΠΉ ΡΠΈΠΊΠ»Π°. - ΠΡΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΠΈΡΠ°ΡΡ Π³ΠΈΠ±ΠΊΠΈΠ΅ ΠΈ Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
 
π ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 1: ΠΠ½Π°Π»ΠΈΠ· ΡΠΈΡΠ΅Π»
ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ:
- Π‘ΠΎΠ·Π΄Π°Π΅Ρ ΡΠ»Π°ΠΉΡ ΡΠΈΡΠ΅Π» ΠΎΡ 1 Π΄ΠΎ 20
 - ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ 
for rangeΠ΄Π»Ρ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° - ΠΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π°
 - ΠΠΎΠ΄ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΡΡΠΌΠΌΡ ΡΠ΅ΡΠ½ΡΡ ΡΠΈΡΠ΅Π»
 - ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ 
deferΠ΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΈΡΠΎΠ³ΠΎΠ²ΠΎΠΉ ΡΡΠΌΠΌΡ 
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 2: ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ΅ΠΊΡΡΠ°
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ:
- ΠΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΡΠΎΠΊΡ ΡΠ΅ΠΊΡΡΠ°
 - ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ 
for rangeΠ΄Π»Ρ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² - ΠΠΎΠ΄ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π³Π»Π°ΡΠ½ΡΡ ΠΈ ΡΠΎΠ³Π»Π°ΡΠ½ΡΡ
 - ΠΠ³Π½ΠΎΡΠΈΡΡΠ΅Ρ ΠΏΡΠΎΠ±Π΅Π»Ρ ΠΈ Π·Π½Π°ΠΊΠΈ ΠΏΡΠ΅ΠΏΠΈΠ½Π°Π½ΠΈΡ
 - ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² Π²ΠΈΠ΄Π΅ ΠΊΠ°ΡΡΡ
 
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 3: ΠΠΎΠΈΡΠΊ Π² ΠΌΠ°ΡΡΠΈΡΠ΅
Π Π΅Π°Π»ΠΈΠ·ΡΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅:
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΡΠΈΠΊΠ»Ρ Ρ ΠΌΠ΅ΡΠΊΠ°ΠΌΠΈ
 - ΠΡΠΈ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π²ΡΡ ΠΎΠ΄ΠΈΡΠ΅ ΠΈΠ· Π²ΡΠ΅Ρ ΡΠΈΠΊΠ»ΠΎΠ²
 - ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
 - ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ 
deferΠ΄Π»Ρ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΠΈΡΠΊΠ°