Sunday, January 19, 2025

[Golang] Phần 12 – Go Conditions

-

1. Tổng quan.

Go conditions là cách để kiểm tra một hoặc nhiều điều kiện và thực hiện các hành động tương ứng dựa trên kết quả của những điều kiện đó. Trong Go, điều kiện thường được kiểm tra bằng cách sử dụng các toán tử so sánh và toán tử logic.

Các cấu trúc điều kiện chính trong Go bao gồm:

  • if: Sử dụng để kiểm tra một điều kiện và thực hiện code nếu điều kiện đó là true.
  • else: Được sử dụng kết hợp với if để xác định code sẽ được thực hiện khi điều kiện của if là false.
  • else if: Được sử dụng để xác định một điều kiện mới để kiểm tra nếu điều kiện trước đó (trong if hoặc else if) là false.
  • switch: Sử dụng để kiểm tra nhiều giá trị khác nhau của biểu thức và thực hiện các hành động tương ứng với giá trị đầu tiên khớp.

Cấu trúc điều kiện giúp chương trình linh hoạt hóa hành vi dựa trên điều kiện đầu vào. Điều này là quan trọng trong việc xây dựng logic điều khiển và đảm bảo rằng chương trình thực hiện đúng các hành động tùy thuộc vào điều kiện hiện tại.

Dưới đây là một số điều quan trọng về điều kiện trong Go:

Toán tử so sánh và logic:

  • Toán tử so sánh:
    • x > y: So sánh x có lớn hơn y không.
    • x != y: So sánh x có khác y không.
    • (x > y) && (y > z): Điều kiện đồng thời – x lớn hơn y và y lớn hơn z.
    • (x == y) || z: Điều kiện hoặc – x bằng y hoặc z.
  • Toán tử logic:
    • &&: Logical AND – true nếu cả hai điều kiện đều đúng.
    • ||: Logical OR – true nếu ít nhất một trong hai điều kiện đúng.
    • !: Logical NOT – đảo ngược kết quả của điều kiện.

Câu lệnh điều kiện:

  • if: Sử dụng để chỉ định code sẽ được thực hiện nếu một điều kiện cụ thể là true.
  • else: Sử dụng để chỉ định code sẽ được thực hiện nếu điều kiện trong if là false.
  • else if: Sử dụng để chỉ định một điều kiện mới để kiểm tra, nếu điều kiện trong if là false và một điều kiện khác cũng là true.
  • switch: Sử dụng để chỉ định nhiều khối code thay thế, dựa trên giá trị của biến.

2. Sử dụng if.

Câu lệnh if được sử dụng để chỉ định code trong Go sẽ được thực hiện nếu một điều kiện nhất định là true.

Dưới đây là một ví dụ sử dụng câu lệnh if trong Go:

package main

import "fmt"

func main() {
  // Kiểm tra xem 20 có lớn hơn 18 không
  if 20 > 18 {
    fmt.Println("20 is greater than 18")
  }
}

Trong ví dụ trên:

  • if 20 > 18: Điều kiện được kiểm tra. Nếu điều kiện là true, code bên trong {} sẽ được thực hiện.
  • fmt.Println("20 is greater than 18"): Nếu điều kiện là true, câu lệnh này sẽ được thực hiện và in ra màn hình “20 is greater than 18”.

Lưu ý rằng tên if phải viết thường (lowercase), nếu viết hoa (uppercase) như If hoặc IF sẽ gây lỗi.

Dưới đây là một ví dụ sử dụng câu lệnh điều kiện ifelse trong Go để kiểm tra các biến:

package main

import "fmt"

func main() {
  x := 10
  y := 20

  // Sử dụng câu lệnh if để kiểm tra điều kiện
  if x > y {
    fmt.Println("x lớn hơn y")
  } else {
    fmt.Println("x không lớn hơn y")
  }
}

Trong ví dụ trên, nếu x lớn hơn y code bên trong if sẽ được thực hiện, ngược lại code bên trong else sẽ được thực hiện.

2. Sử dụng else.

Câu lệnh else được sử dụng để chỉ định đoạn hoặc khối code trong Go sẽ được thực hiện nếu điều kiện của câu lệnh if là false.

Dưới đây là một ví dụ sử dụng câu lệnh ifelse trong Go:

package main

import "fmt"

func main() {
  time := 20

  // Kiểm tra xem thời gian có nhỏ hơn 18 không
  if time < 18 {
    fmt.Println("Good day.")
  } else {
    fmt.Println("Good evening.")
  }
}

Trong ví dụ trên:

  • if time < 18: Điều kiện được kiểm tra. Nếu điều kiện là true, code bên trong {} của if sẽ được thực hiện.
  • fmt.Println("Good day."): Nếu điều kiện của if là true, câu lệnh này sẽ được thực hiện và in ra màn hình “Good day.”
  • else: Nếu điều kiện của if là false, code bên trong {} của else sẽ được thực hiện.
  • fmt.Println("Good evening."): Nếu điều kiện của if là false, câu lệnh này sẽ được thực hiện và in ra màn hình “Good evening.”

Do thời gian (time) trong ví dụ là 20 (lớn hơn 18), nên code bên trong else sẽ được thực hiện và “Good evening.” sẽ được in ra màn hình.

Trong ví dụ tiếp theo, nhiệt độ là 14 nên điều kiện iflà false và dòng code bên trong elsecâu lệnh được thực thi:

package main
import ("fmt")

func main() {
  temperature := 14
  if (temperature > 15) {
    fmt.Println("It is warm out there")
  } else {
    fmt.Println("It is cold out there")
  }
}

Trong ví dụ trên, biến temperature được khởi tạo với giá trị là 14. Sau đó, chúng ta sử dụng câu lệnh if để kiểm tra điều kiện: “nếu nhiệt độ (temperature) lớn hơn 15″. Tuy nhiên, vì nhiệt độ thực tế là 14, điều kiện này là sai (false).

Vì điều kiện if là sai, chương trình sẽ thực hiện code bên trong else. Do đó, câu lệnh fmt.Println("It is cold out there") sẽ được thực hiện và in ra màn hình là “It is cold out there”. Điều này là do nhiệt độ không đạt được điều kiện cần thiết để được coi là “ấm” (temperature > 15), nên chương trình đưa ra kết luận là “Trời lạnh”.

Kết quả chương trình sẽ in ra màn hình thông báo “It is cold out there” do điều kiện nhiệt độ không đạt được yêu cầu để coi là “ấm”.

4. Lưu ý với cú pháp khai báo if else.

Trong Go, cú pháp của câu lệnh else yêu cầu rằng phần kết thúc code của câu lệnh if phải được viết trên cùng một dòng với } mà không có dòng trống hoặc dấu ngoặc { ở giữa. Nếu có dấu ngoặc { trên một dòng mới thì nó sẽ gây ra lỗi.

Đây là một ví dụ sai.

package main
import ("fmt")

func main() {
  temperature := 14
  if (temperature > 15) {
    fmt.Println("It is warm out there.")
  } // this raises an error
  else {
    fmt.Println("It is cold out there.")
  }
}

Ví dụ trên sẽ tạo ra lỗi vì có một dòng trống sau if (temperature > 15) { và trước else {. Điều này không đúng với cú pháp của Go.

./prog.go:9:3: syntax error: unexpected else, expecting }

Ví dụ đúng:

package main

import "fmt"

func main() {
  temperature := 14
  if temperature > 15 {
    fmt.Println("It is warm out there.")
  } else {
    fmt.Println("It is cold out there.")
  }
}

Cú pháp chính xác yêu cầu đoạn code trong if kết thúc và ngay sau đó là else mà không có dòng trống hay dấu ngoặc { nằm giữa chúng.

5. Sử dụng else if.

Câu lệnh else if được sử dụng để xác định một điều kiện mới để kiểm tra nếu điều kiện trước đó (trong câu lệnh if) là false.

Dưới đây là cú pháp của câu lệnh else if:

if condition1 {
  // code to be executed if condition1 is true
} else if condition2 {
  // code to be executed if condition1 is false and condition2 is true
} else {
  // code to be executed if condition1 and condition2 are both false
}

Ví dụ 1 – Trong ví dụ này, chúng ta sử dụng câu lệnh if, else ifelse để kiểm tra giá trị của biến time và thực hiện các hành động khác nhau tùy thuộc vào giá trị đó.

package main

import "fmt"

func main() {
  time := 22

  if time < 10 {
    fmt.Println("Good morning.")
  } else if time < 20 {
    fmt.Println("Good day.")
  } else {
    fmt.Println("Good evening.")
  }
}

Trong ví dụ này:

  • Nếu time nhỏ hơn 10, chương trình sẽ in ra “Good morning.”
  • Nếu time không nhỏ hơn 10 nhưng nhỏ hơn 20 chương trình sẽ in ra “Good day.”
  • Nếu cả hai điều kiện đều sai chương trình sẽ thực hiện code bên trong else và in ra “Good evening.”

Trong trường hợp này, giá trị của time là 22, nên cả hai điều kiện trước đó đều sai và chương trình in ra “Good evening.”

Ví dụ 2 – Trong ví dụ này, chúng ta kiểm tra giá trị của hai biến ab để xác định mối quan hệ giữa chúng và thực hiện hành động tương ứng dựa trên kết quả kiểm tra.

package main

import "fmt"

func main() {
  a := 14
  b := 14

  if a < b {
    fmt.Println("a is less than b.")
  } else if a > b {
    fmt.Println("a is more than b.")
  } else {
    fmt.Println("a and b are equal.")
  }
}

Trong ví dụ này:

  • Nếu a nhỏ hơn b, chương trình sẽ in ra “a is less than b.”
  • Nếu a không nhỏ hơn b, nhưng lớn hơn b, chương trình sẽ in ra “a is more than b.”
  • Nếu cả hai điều kiện đều sai, chương trình sẽ in ra “a and b are equal.”

Trong trường hợp này, giá trị của cả ab là 14, nên chương trình in ra “a and b are equal.”

Ví dụ 3 – Trong ví dụ tiếp theo, chúng ta có ba điều kiện kiểm tra:

package main
import ("fmt")

func main() {
  x := 30
  if x >= 10 {
    fmt.Println("x is larger than or equal to 10.")
  } else if x > 20 {
    fmt.Println("x is larger than 20.")
  } else {
    fmt.Println("x is less than 10.")
  }
}
  • Nếu x lớn hơn hoặc bằng 10, chương trình in ra “x is larger than or equal to 10.”
  • Nếu x không lớn hơn hoặc bằng 10, nhưng lớn hơn 20, chương trình in ra “x is larger than 20.”
  • Nếu cả hai điều kiện trên đều sai, chương trình sẽ thực hiện code trong else và in ra “x is less than 10.”

Trong trường hợp này, x có giá trị là 30, điều kiện đầu tiên là đúng nên code trong điều kiện đầu tiên được thực hiện.

Do đó, kết quả in ra là “x is larger than or equal to 10.”

x is larger than or equal to 10.

6. If lồng nhau.

Câu lệnh if có thể được nhúng bên trong một câu lệnh if khác, và điều này được gọi là “nested if” (if lồng nhau). Trong một câu lệnh if lồng nhau code bên trong câu lệnh if nằm trong code của câu lệnh if bên ngoài.

Cú pháp của câu lệnh if lồng nhau như sau:

if condition1 {
  // code to be executed if condition1 is true
  if condition2 {
    // code to be executed if both condition1 and condition2 are true
  }
}

Ví dụ:

package main

import "fmt"

func main() {
  num := 20

  if num >= 10 {
    fmt.Println("Num is more than 10.")

    if num > 15 {
      fmt.Println("Num is also more than 15.")
    }
  } else {
    fmt.Println("Num is less than 10.")
  }
}

Trong ví dụ này:

  • Nếu num lớn hơn hoặc bằng 10, chương trình sẽ in ra “Num is more than 10.”
    • Trong trường hợp này chúng ta có một câu lệnh if lồng nhau kiểm tra xem num có lớn hơn 15 không. Nếu điều này đúng chương trình in ra “Num is also more than 15.”
  • Nếu num không lớn hơn hoặc bằng 10 chương trình sẽ thực hiện code trong else và in ra “Num is less than 10.”

Do num có giá trị là 20, cả hai điều kiện đều đúng nên cả hai câu lệnh fmt.Println trong cả hai if đều được thực hiện.

Kết quả in ra là:

Num is more than 10.
Num is also more than 15.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories