Switch {13/100}

Kalau kita perhatikan lebih dalam, mungkin kita akan terkejut ketika mendapatkan fakta bahwa Golang hanya memiliki 25 keyword, bahkan lebih sedikit dari C dan lebih sedikit dari karakter alphabet (26).

Berikut adalah keyword-keyword yang ada di Golang

break    default      func    interface    select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
// https://astaxie.gitbooks.io/build-web-application-with-golang/content/en/02.0.html

Sangat simpel bukan?

Melanjuti pembelajaran hari kemarin, hari ini kita akan belajar tentang salah satu keyword dari Golang, yaitu switch.

Sama seperti if, switch biasa digunakan untuk melakukan seleksi kondisi yang berguna untuk mengcontrol alur dari program atau biasa disebut flow control programming.

package main
import "fmt"
func main() {

var score = 'A'
    switch score {
case 'A':
fmt.Println("Cool!")
case 'B':
fmt.Println("Great!")
case 'C':
fmt.Println("Not bad")
default:
fmt.Println("Study hard son...")
}
}

Sintaks switch di Golang hampir sama seperti switch pada bahasa pemrograman lainnya, hanya saja di Golang kita tidak perlu menggunakan kurung ().

Menurut sumber yang saya baca, switch di Golang memiliki sedikit perbedaan dengan switch di bahasa pemrograman lain, Di Golang apabila sebuah case terpenuhi maka tidak akan dilanjutkan pengecekan ke case selanjutnya, meskipun kita tidak menuliskan keyword break di case tersebut (Pada umumnya kita harus menuliskan keyword break agar tidak dilanjutkan ke case selanjutnya).

Kita juga bisa menggunakan switch dengan gaya if

package main
import "fmt"
func main() {

var price = 6500
    switch {
case price > 20000:
fmt.Println("Mahal!")
case price > 10000 && price <= 20000:
fmt.Println("Lumayan")
case (price > 0) && (price <= 10000):
fmt.Println("Murah banget iki...")
default:
fmt.Println("Mangan gratisss")
}
}

Kita juga bisa menggunakan banyak kondisi dalam 1 case

var point = 6

switch point {
case 8:
fmt.Println("perfect")
case 7, 6, 5, 4:
fmt.Println("awesome")
default:
fmt.Println("not bad")
}
//sumber = http://dasarpemrogramangolang.novalagung.com/12-seleksi-kondisi.html

Kalau kita lihat list-list dari keyword yang ada di Golang, ada keyword fallthrough. Nah kalau di Golang secara default apabila suatu case terpenuhi maka tidak akan melanjutkan pengecekan ke case selanjutnya, bagaimana kalau kasusnya kita ingin menggunakan switch yang tetap melanjutkan pengecekan ke case selanjutnya ketika suatu case sudah terpenuhi?

fallthrough ini jawabannya

var point = 6

switch {
case point == 8:
fmt.Println("perfect")
case (point < 8) && (point > 3):
fmt.Println("awesome")
fallthrough
case point > 5:
fmt.Println("you need to learn more")
default:
{
fmt.Println("not bad")
fmt.Println("you need to learn more")
}
}
//sumber = http://dasarpemrogramangolang.novalagung.com/12-seleksi-kondisi.html

Dari contoh diatas, ketika case sudah terpenuhi tepatnya di case (point < 8) && (point > 3), pengecekan akan tetap dilanjutkan ke case point > 5, karna kita menggunakan fallthrough disitu.

Happy sunday!