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 ifswitch để 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 ifelse 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 ifelse 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 ifswitch 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.