Trả về nhiều giá trị
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 56 trên 109.
Các hàm (function) trong Go có thể trả về nhiều giá trị cùng lúc, rất hữu ích khi cần trả về cả kết quả lẫn thông tin lỗi.
Tạo một hàm trả về cả thương và số dư:
func divide(a, b int) (int, int) {
quotient := a / b
remainder := a % b
return quotient, remainder
}
func main() {
q, r := divide(7, 3)
fmt.Println("7 ÷ 3 =", q, "with remainder", r)
}Khi chạy chương trình này, kết quả là:
7 ÷ 3 = 2 with remainder 1Hàm (function) trả về hai giá trị được phân tách bằng dấu phẩy, và ta gán cả hai giá trị cho nhiều biến.
Nếu chỉ cần một vài giá trị được trả về, bạn có thể dùng định danh trống _ để bỏ qua những giá trị không cần:
q, _ := divide(7, 3) // bỏ qua số dư
fmt.Println("Quotient:", q)Dùng _ để yêu cầu Go bỏ qua giá trị trả về đó. Bạn cần làm vậy khi không dùng giá trị, vì Go không cho phép biến không được sử dụng.
Thử thách
Người mớiTrong thử thách này, bạn sẽ luyện tập cách trả về nhiều giá trị từ một hàm trong Go.
Chúng ta có một hàm tên là getPersonInfo, hàm này cần trả về tên, tuổi và thông tin một người có phải là sinh viên hay không. Nhiệm vụ của bạn là hoàn thành hàm bằng cách thêm câu lệnh return phù hợp.
Tự làm thử
package main
import "fmt"
// Hàm (function) này cần trả về ba giá trị: name, age và isStudent
func getPersonInfo() (string, int, bool) {
// Các biến đã được khai báo sẵn cho bạn
name := "Alex"
age := 25
isStudent := true
// TODO: Trả về cả ba giá trị (name, age, isStudent)
}
func main() {
// Gọi hàm và lưu các giá trị trả về
name, age, isStudent := getPersonInfo()
// In các giá trị ra
fmt.Printf("Name: %s\n", name)
fmt.Printf("Age: %d\n", age)
fmt.Printf("Is Student: %t\n", isStudent)
}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
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ụng3Toá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