switch

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π²Π΅ разновидности инструкции Π²Ρ‹Π±ΠΎΡ€Π° switch: Π²Ρ‹Π±ΠΎΡ€ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ выраТСния ΠΈ Π²Ρ‹Π±ΠΎΡ€ ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ switch Π² Go Π½Π΅ выполняСт всС Π²Π΅Ρ‚ΠΊΠΈ Π΄ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΉ инструкции break (ΠΊΠ°ΠΊ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках; Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² Go Π½Π΅ трСбуСтся Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ инструкциСй break ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» case). Однако имССтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ явно ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ "ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ" Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Π΄Π΅Π» case с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструкции fallthrough.

Π’Ρ‹Π±ΠΎΡ€ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ выраТСния

switch Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°ΡΠ˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ; Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ {  // ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ = true
    case списокВыраТСний1: Π±Π»ΠΎΠΊ1  // списокВыраТСний раздСляСтся запятыми
    ...
    case списокВыраТСнийN: Π±Π»ΠΎΠΊN // Ρ‚ΠΈΠΏ списокВыраТСний Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ 
    default: Π±Π»ΠΎΠΊD
}

Π’Ρ‹Π±ΠΎΡ€ ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ

switch Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°ΡΠ˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ; ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒΠ’ΠΈΠΏΠ° {
    case списокВипов1: блок1
    ...
    case списокВиповN: блокN
    default: Π±Π»ΠΎΠΊD
}

Π‘Π»ΡƒΠΆΠΈΡ‚ для привСдСния Ρ‚ΠΈΠΏΠΎΠ² Ρ‡Π°Ρ‰Π΅.

switch true

Π­Ρ‚ΠΎ Π°Π½Π°Π»ΠΎΠ³ (Π»ΡƒΡ‡ΡˆΠΈΠΉ) написанию Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ if-then-else:

t := time.Now()
	switch {
	case t.Hour() < 12:
		fmt.Println("Good morning!")
	case t.Hour() < 17:
		fmt.Println("Good afternoon.")
	default:
		fmt.Println("Good evening.")
	}

Last updated