Degëzimi (switch)
1 package main
2
3 import "fmt"
4
5 func main() {
6 x := 20000
7
8 switch x {
9 case 10000:
10 fmt.Println("Prishtina")
11 case 20000:
12 fmt.Println("Prizreni")
13 case 70000:
14 fmt.Println("Ferizaji")
15 default:
16 fmt.Println("Kod postar i panjohur")
17 }
18 }
https://play.golang.org/p/Je35FFMxj6_-
Rezultati:
Prizreni
Blloku i kodit pas default ekzekutohet nëse nuk është plotësuar asnjë prej kushteve me case. Urdhëri default nuk është i domosdoshëm nëse logjika e kodit nuk e kërkon. Urdhëro default mund të vendoset kudo brenda switch, nuk është e domosdoshme të jetë në fund.
Tipi i vlerës që evaluuar në switch dhe tipi i vlerës në case duhet të përputhen. Nëse nuk përputhen, do të lajmërohet gabim gjatë kompajlimit.
Nëse nuk ka fare shprehje pas switch, vlera që evaluohet është boolean, prandaj dhe në case duhet të kemi shprehje boolean, siç janë operatorët e krahasimit.
1 package main
2
3 import "fmt"
4
5 func main() {
6 i := 1
7 switch {
8 case i < 5:
9 fmt.Println("i me i vogel se 5")
10 case i == 5:
11 fmt.Println("i baras 5")
12 default:
13 fmt.Println("i me i madh 5")
14 }
15 }
https://play.golang.org/p/rtdtszn6ZrR
Rezultati:
i me i vogel se 5
Nëse në më tepër se një case plotësohet kushti, ekzekutohet vetëm kodi pas case të parë.
1 package main
2
3 import "fmt"
4
5 func main() {
6 i := 1
7 switch {
8 case i < 5:
9 fmt.Println("i me i vogel se 5")
10 case i < 7:
11 fmt.Println("i me i vogel se 7")
12 }
13 }
https://play.golang.org/p/jfczKTCcaSU
Rezultati:
i me i vogel se 5
Switch në Go nuk ka nevojë për break.
Nëse duhet që nga një case të kalohet te tjetri case pa e evaluuar kushtin, përdoret urdhëri fallthrough.
1 package main
2
3 import "fmt"
4
5 func main() {
6 x := 20000
7
8 switch x {
9 case 10000:
10 fmt.Println("Prishtina")
11 case 20000:
12 fmt.Println("Prizreni")
13 fallthrough
14 case 70000:
15 fmt.Println("Ferizaji")
16 default:
17 fmt.Println("Kod postar i panjohur")
18 }
19 }
https://play.golang.org/p/elGAO1aAXjC
Rezultati:
Prizreni
Ferizaji
Kllapat e mëdha (curly braces) nuk janë të domosdoshëm për definimin e bllokut të kodit pas case.
1 package main
2
3 import "fmt"
4
5 func main() {
6 i := 1
7 switch {
8 case i < 5:
9 {
10 fmt.Println("i me i vogel se 5")
11 }
12 case i == 5:
13 {
14 fmt.Println("i baras 5")
15 }
16 default:
17 {
18 fmt.Println("i me i madh 5")
19 }
20 }
21
22 // Njëjtë si
23
24 switch {
25 case i < 5:
26 fmt.Println("i me i vogel se 5")
27 case i == 5:
28 fmt.Println("i baras 5")
29
30 default:
31 fmt.Println("i me i madh 5")
32 }
33 }
https://play.golang.org/p/qj3X-PyUAME
Rezultati:
i me i vogel se 5
i me i vogel se 5
Shprehjet në case mund të jenë vlera apo shprehje.
1 package main
2
3 import "fmt"
4
5 func main() {
6 a := 2
7 i := 8
8
9 switch i {
10 case 5:
11 fmt.Println("i baras 5")
12 case a + 6:
13 fmt.Println("i baras 8")
14 }
15 }
https://play.golang.org/p/Z147M9xT7Co
Rezultati:
i baras 8
Mund të përdorim çfarëdo numri të case.
Brenda case mund të vendosen disa shprehje të përputhjes, të ndarë me presje.
1 package main
2
3 import "fmt"
4
5 func main() {
6 a := 5
7
8 switch a {
9 case 5, 6, 7:
10 fmt.Println("a baras me 5, 6 ose 7")
11 case 8:
12 fmt.Println("a baras me 8")
13 }
14 }
https://play.golang.org/p/WW4022ZHACD
Rezultati:
a baras me 5, 6 ose 7