1 Tổng quan về Câu lệnh điều kiện
Câu lệnh điều kiện là công cụ quan trọng để kiểm soát luồng logic của các chương trình trong lập trình. Trong Golang, các câu lệnh điều kiện tương tự như trong các ngôn ngữ lập trình khác, nhưng có những đặc điểm riêng. Chúng cho phép chúng ta quyết định mã nào sẽ được thực thi dựa trên các điều kiện đúng hoặc sai, tăng cường tính linh hoạt và dễ bảo trì của mã.
2 Câu lệnh if
2.1 Sử dụng cơ bản của câu lệnh if
Câu lệnh if
là câu lệnh điều kiện cơ bản nhất trong ngôn ngữ Go. Cú pháp của nó như sau:
if điều kiện {
// Mã để thực thi khi điều kiện đúng
}
Dưới đây là một ví dụ đơn giản:
package main
import "fmt"
func main() {
x := 10
if x > 5 {
fmt.Println("x lớn hơn 5")
}
}
Mã này sẽ kiểm tra nếu x
lớn hơn 5, và nếu đúng, nó sẽ thực hiện hoạt động in.
2.2 Biểu thức điều kiện
Biểu thức điều kiện bao gồm các toán tử so sánh (như ==
, !=
, <
, >
, <=
, >=
) và toán tử logic (như &&
(VÀ), ||
(HOẶC), !
(KHÔNG)).
Ví dụ, để kiểm tra xem một biến có nằm trong một phạm vi cụ thể:
y := 20
if y >= 10 && y <= 30 {
fmt.Println("y nằm giữa 10 và 30")
}
Biểu thức điều kiện trên sử dụng toán tử logic &&
để đảm bảo rằng giá trị của y
nằm giữa 10 và 30.
2.3 Cấu trúc if...else và else if
Khi điều kiện if
không được thỏa mãn, chúng ta có thể sử dụng else
để thực thi một khối mã thay thế. else if
cho phép chúng ta kiểm tra nhiều điều kiện. Dưới đây là một ví dụ:
score := 88
if score >= 90 {
fmt.Println("Xuất sắc")
} else if score >= 80 {
fmt.Println("Tốt")
} else if score >= 70 {
fmt.Println("Trung bình")
} else {
fmt.Println("Dưới trung bình")
}
Mã này sẽ in ra các đánh giá khác nhau dựa trên giá trị của score
.
3 Câu lệnh switch
3.1 Cú pháp cơ bản của switch
Câu lệnh switch
là một câu lệnh nhánh điều kiện súc tích hơn, đặc biệt thích hợp cho các tình huống mà cần phải đánh giá nhiều giá trị. Cú pháp cơ bản của câu lệnh switch
như sau:
switch biểu thức {
case giá trị1:
// Mã để thực thi khi khớp giá trị1
case giá trị2:
// Mã để thực thi khi khớp giá trị2
default:
// Mã để thực thi mặc định
}
Nếu giá trị của biểu thức
khớp với giá trị theo sau case
, khối mã tương ứng sẽ được thực thi.
3.2 switch Fallthrough
Trong câu lệnh switch
của Go, mỗi nhánh mặc định không rơi vào nhánh case tiếp theo mặc định trừ khi sử dụng từ khóa fallthrough
.
switch num {
case 1:
fmt.Println("Một")
fallthrough
case 2:
fmt.Println("Hai")
default:
fmt.Println("Không phải Một cũng không phải Hai")
}
Trong mã trên, nếu num
là 1, ngay cả khi khớp với case 1
, do sự hiện diện của từ khóa fallthrough
, chương trình sẽ tiếp tục thực thi mã trong case 2
và in ra "Hai".
3.3 Nhánh dạng và Nhánh đoạn tùy chỉnh
Câu lệnh switch
cũng hỗ trợ nhánh dựa trên kiểu biến, được gọi là nhánh dạng. Ngoài ra, chúng ta có thể tạo điều kiện nhánh tùy chỉnh phức tạp hơn.
Ví dụ về nhánh dạng:
var i interface{} = 1
switch i.(type) {
case int:
fmt.Println("i là số nguyên")
case float64:
fmt.Println("i là float64")
default:
fmt.Println("i là một loại khác")
}
Các điều kiện nhánh tùy chỉnh có thể được viết để thực hiện các đánh giá điều kiện phức tạp hơn theo nhu cầu.
4 Bài tập Thực tế
Trong phần này, chúng ta sẽ củng cố hiểu biết và áp dụng các câu lệnh điều kiện trong Golang thông qua các ví dụ cụ thể. Qua các thách thức lập trình thực tế, bạn sẽ trở nên thành thạo hơn trong việc sử dụng câu lệnh if
và switch
để giải quyết các vấn đề thực tế.
Máy Tính Điểm
Hãy viết một chương trình máy tính điểm đơn giản. Chương trình này sẽ xác định và xuất ra điểm tương ứng dựa trên điểm số mà người dùng nhập vào. Tiêu chí đánh giá như sau:
- A cho điểm từ 90 trở lên
- B cho điểm từ 80 đến 89
- C cho điểm từ 70 đến 79
- D cho điểm từ 60 đến 69
- F cho điểm dưới 60
Chúng ta có thể sử dụng cả câu lệnh if
hoặc switch
để thực hiện chức năng này. Trước hết, chúng ta hãy xem xét một ví dụ sử dụng câu lệnh if
:
package main
import (
"fmt"
)
func main() {
var score int
fmt.Print("Vui lòng nhập điểm: ")
fmt.Scan(&score)
if score >= 90 {
fmt.Println("Điểm: A")
} else if score >= 80 {
fmt.Println("Điểm: B")
} else if score >= 70 {
fmt.Println("Điểm: C")
} else if score >= 60 {
fmt.Println("Điểm: D")
} else {
fmt.Println("Điểm: F")
}
}
Trong đoạn mã này, chúng ta đầu tiên khai báo một biến score
để lưu điểm số nhập của người dùng. Chúng ta sử dụng hàm fmt.Scan
để lấy đầu vào của người dùng. Sau đó, chúng ta sử dụng một loạt các câu lệnh if
và else if
để xác định điểm tương ứng cho điểm số và sử dụng hàm fmt.Println
để xuất ra điểm.
Tiếp theo, chúng ta hãy xem một ví dụ sử dụng câu lệnh switch
:
package main
import (
"fmt"
)
func main() {
var score int
fmt.Print("Vui lòng nhập điểm: ")
fmt.Scan(&score)
switch {
case score >= 90:
fmt.Println("Điểm: A")
case score >= 80:
fmt.Println("Điểm: B")
case score >= 70:
fmt.Println("Điểm: C")
case score >= 60:
fmt.Println("Điểm: D")
default:
fmt.Println("Điểm: F")
}
}
Trong ví dụ sử dụng câu lệnh switch
, cấu trúc mã nguồn được rút gọn và rõ ràng hơn. Chúng ta không cần sử dụng nhiều câu lệnh if
và else if
liên tiếp; thay vào đó, chúng ta trực tiếp chỉ định các điều kiện trong mỗi case
sau câu lệnh switch
. Điểm số không phù hợp với điều kiện của case
trước đó sẽ tự động chuyển sang case
tiếp theo cho đến khi phù hợp với nhánh điều kiện tương ứng hoặc đạt đến default
, in ra điểm F
.
Bây giờ khi bạn đã biết cách sử dụng if
và switch
cho việc xác định điều kiện, hãy thử viết chương trình của riêng bạn và luyện tập để củng cố hiểu biết.
Ở phần tiếp theo, chúng ta sẽ tiếp tục giới thiệu thêm các vấn đề thực tế để giúp bạn củng cố việc sử dụng câu lệnh điều kiện trong Golang.
Xin lưu ý rằng đoạn mã trên chỉ dùng cho mục đích hướng dẫn. Khi sử dụng trong ứng dụng thực tế, cần xem xét các yếu tố như tương tác người dùng và xử lý lỗi để làm cho chương trình mạnh mẽ hơn.