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ủaif
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ặcelse 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 trongif
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 trongif
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 if
và else
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 if
và else
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ủaif
sẽ được thực hiện.fmt.Println("Good day.")
: Nếu điều kiện củaif
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ủaif
là false, code bên trong{}
củaelse
sẽ được thực hiện.fmt.Println("Good evening.")
: Nếu điều kiện củaif
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 if
là false
và dòng code bên trong else
câ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 if
và else
để 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 a
và b
để 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ơnb
, chương trình sẽ in ra “a is less than b.” - Nếu
a
không nhỏ hơnb
, nhưng lớn hơnb
, 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ả a
và b
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 xemnum
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.”
- Trong trường hợp này chúng ta có một câu lệnh
- Nếu
num
không lớn hơn hoặc bằng 10 chương trình sẽ thực hiện code trongelse
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.