Ôn tập: xử lý sự cố
Thuộc phần Kiến thức nền tảng trong hành trình GO của Coddy. Bài học 109 trên 109.
Thử thách
DễHãy luyện tập cách xử lý lỗi trong Go với một chương trình chuyển đổi nhiệt độ đơn giản.
Nhiệm vụ của bạn là triển khai một hàm (function) chuyển đổi nhiệt độ từ Celsius sang Fahrenheit, kèm theo cách xử lý lỗi phù hợp.
Hoàn thành hàm celsiusToFahrenheit, hàm này:
- Chuyển đổi nhiệt độ Celsius sang Fahrenheit bằng công thức: F = C × 9/5 + 32
- Trả về lỗi nếu nhiệt độ thấp hơn độ không tuyệt đối (-273.15°C)
Với thông báo lỗi, bạn phải trả về chính xác: "Error: temperature below absolute zero"
Hàm main có các test case để kiểm tra phần triển khai của bạn.
Tự làm thử
package main
import (
"errors"
"fmt"
)
// celsiusToFahrenheit chuyển đổi từ độ C sang độ F
// Trả về lỗi nếu nhiệt độ thấp hơn độ không tuyệt đối (-273.15°C)
func celsiusToFahrenheit(celsius float64) (float64, error) {
// TODO: Triển khai logic chuyển đổi
// 1. Kiểm tra xem nhiệt độ có thấp hơn độ không tuyệt đối (-273.15°C) không
// 2. Nếu hợp lệ, chuyển đổi theo công thức: F = C × 9/5 + 32
// 3. Trả về giá trị và lỗi phù hợp
return 0, nil
}
func main() {
// Kiểm tra nhiệt độ hợp lệ
fmt.Println("Converting 25°C to Fahrenheit:")
fahrenheit, err := celsiusToFahrenheit(25)
if err != nil {
fmt.Println(err)
} else {
fmt.Printf("25°C = %.2f°F\n", fahrenheit)
}
// Kiểm tra một nhiệt độ hợp lệ khác
fmt.Println("\nConverting 0°C to Fahrenheit:")
fahrenheit, err = celsiusToFahrenheit(0)
if err != nil {
fmt.Println(err)
} else {
fmt.Printf("0°C = %.2f°F\n", fahrenheit)
}
// Kiểm tra nhiệt độ không hợp lệ (thấp hơn độ không tuyệt đối)
fmt.Println("\nConverting -300°C to Fahrenheit:")
fahrenheit, err = celsiusToFahrenheit(-300)
if err != nil {
fmt.Println(err)
} else {
fmt.Printf("-300°C = %.2f°F\n", fahrenheit)
}
}Tất cả bài học trong Kiến thức nền tảng
4Toán tử so sánh và logic
Toán tử so sánh, phần 1Toán tử so sánh, phần 2Toán tử AND logicToán tử OR logicToán tử NOT logicCơ bản về thứ tự ưu tiên của toán tửÔn tập: thực hiện phép so sánh7Luồng điều khiển: vòng lặp
Giải thích vòng lặp `for`Vòng lặp `for` cơ bảnVòng lặp `for` chỉ có điều kiệnTừ khóa `break`Từ khóa `continue`Vòng lặp lồng nhauÔn tập: lặp lại hành động2Biến và các kiểu dữ liệu cơ bản
Biến là gìSuy luận kiểu với `:=`Số nguyên (int)Số dấu phẩy độngGiá trị BooleanChuỗiGiá trị 0Hằng sốQuy ước đặt tênÔn tập: biến và kiểu dữ liệu5Đầu vào/đầu ra cơ bản
Đầu ra có định dạngĐộng từ định dạngIn các kiểu dữ liệuNhận đầu vào cơ bản từ người dùngÔn tập: đầu vào và đầu ra8Hàm
Tìm hiểu về hàmKhai báo hàmGọi hàmTham số của hàmTrả về một giá trịTrả về nhiều giá trịGiá trị trả về có tênNhững điều cơ bản về phạm vi của hàmÔn tập: Tạo code có thể tái sử dụng11Kiểu dữ liệu phức hợp: slice
Giới thiệu về sliceKhai báo slice literalTạo slice bằng `make`Độ dài và sức chứa của sliceTruy cập phần tử trong sliceThêm phần tửTạo slice từ slice hoặc mảng hiện cóDuyệt qua sliceSao chép sliceTổng kết: danh sách động14Xử lý lỗi cơ bản
Khái niệm về lỗiGiao diện `error`Hàm trả về lỗiKiểm tra lỗiTạo lỗi đơn giảnTạo lỗi có định dạngXử lý lỗi cơ bảnÔn tập: xử lý sự cố3Toán tử cơ bản
Toán tử số họcToán tử chiaToán tử moduloToán tử gánToán tử gán kết hợpTăng và giảmÔn tập: Tính toán6Luồng điều khiển: câu lệnh điều kiện
Câu lệnh `if`Từ khóa `else`Từ khóa `else if`Biến bị che khuất trong `if`Khởi tạo biếnCâu lệnh `switch``switch` có biểu thức`switch` không có biểu thứcTừ khóa `fallthrough`Ôn tập: đưa ra quyết địnhTự luyện tập: Trình biên dịch Go online