Menu
CoddyTech

Hàm trả về lỗi

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 104 trên 109.

Trong Go, hàm (function) thường trả về error làm giá trị trả về cuối cùng để cho biết có xảy ra lỗi hay không.

Tạo một hàm (function) trả về cả kết quả lẫn lỗi:

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("cannot divide by zero")
    }
    return a / b, nil
}

Gọi hàm (function) và xử lý lỗi:

func main() {
    result, err := divide(10, 0)
    if err != nil {
        fmt.Println("Error:", err)
    } else {
        fmt.Println("Result:", result)
    }
}

Kết quả đầu ra sẽ là:

Error: cannot divide by zero
challenge icon

Thử thách

Người mới

Trong thử thách này, bạn sẽ luyện tập tạo một hàm trả về lỗi khi đầu vào không hợp lệ.

Bạn cần hoàn thành hàm validateUsername để kiểm tra xem tên người dùng có hợp lệ hay không. Tên người dùng hợp lệ nếu có ít nhất 3 ký tự. Nếu tên người dùng hợp lệ, hãy trả về nil cho lỗi. Nếu không hợp lệ, hãy trả về một lỗi kèm thông báo phù hợp.

Đoạn code gọi hàm và xử lý lỗi đã được viết sẵn cho bạn.

Lưu ý: Thử thách này dùng các biến được xác định trước thay vì đầu vào từ người dùng.

Tự làm thử

package main

import (
	"errors"
	"fmt"
)

func validateUsername(username string) error {
	// TODO: Kiểm tra xem tên người dùng có ít hơn 3 ký tự không
	// Nếu có, trả về lỗi với thông báo "username too short"
	// Nếu không, trả về nil (không có lỗi)
	
	return nil
}

func main() {
	// Kiểm tra với tên người dùng hợp lệ
	validName := "bob123"
	err1 := validateUsername(validName)
	if err1 != nil {
		fmt.Printf("%s is invalid: %v\n", validName, err1)
	} else {
		fmt.Printf("%s is valid!\n", validName)
	}
	
	// Kiểm tra với tên người dùng không hợp lệ
	invalidName := "ab"
	err2 := validateUsername(invalidName)
	if err2 != nil {
		fmt.Printf("%s is invalid: %v\n", invalidName, err2)
	} else {
		fmt.Printf("%s is valid!\n", invalidName)
	}
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Trình biên dịch Go online