Skip to content

Kontrol Kondisi Go

Di Go total ada tiga jenis pernyataan kontrol kondisi if switch select. select relatif lebih khusus dibandingkan keduanya bagian ini tidak akan menjelaskannya akan dibiarkan hingga bagian konkurensi untuk diperkenalkan.

if else

if else paling banyak dua cabang judgment format pernyataannya adalah sebagai berikut

go
if expression {

}

Atau

go
if expression {

}else {

}

expression harus berupa ekspresi boolean yaitu hasilnya entah benar atau salah harus berupa nilai boolean contohnya sebagai berikut

go
func main() {
   a, b := 1, 2
   if a > b {
      b++
   } else {
      a++
   }
}

Juga dapat menulis ekspresi lebih kompleks saat diperlukan untuk meningkatkan keterbacaan sebaiknya menggunakan tanda kurung untuk secara eksplisit menunjukkan mana yang harus dihitung terlebih dahulu.

go
func main() {
   a, b := 1, 2
    if a<<1%100+3 > b*100/20+6 { // (a<<1%100)+3 > (b*100/20)+6
      b++
   } else {
      a++
   }
}

Sekaligus pernyataan if juga dapat berisi beberapa pernyataan sederhana misalnya

go
func main() {
  if x := 1 + 1; x > 2 {
    fmt.Println(x)
  }
}

else if

Pernyataan else if dapat membuat lebih banyak cabang judgment berdasarkan if else format pernyataannya adalah sebagai berikut

go
if expression1 {

}else if expression2 {

}else if expression3 {

}else {

}

Selama proses eksekusi judgment setiap ekspresi adalah dari kiri ke kanan seluruh judgment pernyataan if adalah dari atas ke bawah. Sebuah contoh berdasarkan skor untuk memberikan nilai sebagai berikut cara penulisan pertama

go
func main() {
   score := 90
   var ans string
   if score == 100 {
      ans = "S"
   } else if score >= 90 && score < 100 {
      ans = "A"
   } else if score >= 80 && score < 90 {
      ans = "B"
   } else if score >= 70 && score < 80 {
      ans = "C"
   } else if score >= 60 && score < 70 {
      ans = "E"
   } else if score >= 0 && score < 60 {
      ans = "F"
   } else {
      ans = "nil"
   }
   fmt.Println(ans)
}

Cara penulisan kedua memanfaatkan premis bahwa pernyataan if adalah judgment dari atas ke bawah jadi kode harus lebih ringkas.

go
func main() {
  score := 90
  var ans string
  if score >= 0 && score < 60 {
    ans = "F"
  } else if score < 70 {
    ans = "D"
  } else if score < 80 {
    ans = "C"
  } else if score < 90 {
    ans = "B"
  } else if score < 100 {
    ans = "A"
  } else if score == 100 {
    ans = "S"
    }else {
        ans = "nil"
    }
  fmt.Println(ans)
}

switch

Pernyataan switch juga merupakan jenis pernyataan judgment multi-cabang format pernyataannya adalah sebagai berikut

go
switch expr {
  case case1:
    statement1
  case case2:
    statement2
  default:
    default statement
}

Sebuah contoh sederhana sebagai berikut

go
func main() {
   str := "a"
   switch str {
   case "a":
      str += "a"
      str += "c"
   case "b":
      str += "bb"
      str += "aaaa"
   default: // Ketika semua case tidak cocok maka akan mengeksekusi cabang default
      str += "CCCC"
   }
   fmt.Println(str)
}

Juga dapat menulis beberapa pernyataan sederhana sebelum ekspresi misalnya mendeklarasikan variabel baru

go
func main() {
  switch num := f(); { // setara dengan switch num := f(); true {
  case num >= 0 && num <= 1:
    num++
  case num > 1:
    num--
    fallthrough
  case num < 0:
    num += num
  }
}

func f() int {
  return 1
}

Pernyataan switch juga dapat tanpa ekspresi di bagian masuk.

go
func main() {
   num := 2
   switch { // setara dengan switch true {
   case num >= 0 && num <= 1:
      num++
   case num > 1:
      num--
   case num < 0:
      num *= num
   }
   fmt.Println(num)
}

Melalui kata kunci fallthrough untuk melanjutkan mengeksekusi cabang berikutnya yang berdekatan.

go
func main() {
   num := 2
   switch {
   case num >= 0 && num <= 1:
      num++
   case num > 1:
      num--
      fallthrough // Setelah menyelesaikan eksekusi cabang ini akan melanjutkan mengeksekusi cabang berikutnya
   case num < 0:
      num += num
   }
   fmt.Println(num)
}

label

Pernyataan label memberikan label pada sebuah blok kode dapat menjadi target goto break continue. Contohnya sebagai berikut

go
func main() {
  A:
    a := 1
  B:
    b := 2
}

Menggunakan label saja tidak memiliki makna apa pun perlu dikombinasikan dengan kata kunci lain untuk digunakan.

goto

goto akan mengalihkan kontrol ke pernyataan label yang sesuai dalam **fungsi yang sama` contohnya sebagai berikut

go
func main() {
   a := 1
   if a == 1 {
      goto A
   } else {
      fmt.Println("b")
   }
A:
   fmt.Println("a")
}

Dalam aplikasi praktis goto sangat jarang digunakan lompat ke sana ke mari sangat mengurangi keterbacaan kode konsumsi performa juga merupakan masalah.

Golang by www.golangdev.cn edit