Tổng kết: danh sách động
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 83 trên 109.
Thử thách
Trung bìnhHãy luyện tập cách làm việc với slice trong Go bằng cách tạo một trình quản lý danh sách mua sắm đơn giản!
Nhiệm vụ của bạn là triển khai một số hàm (function) để thao tác với danh sách mua sắm:
addItems: Thêm mặt hàng mới vào danh sách mua sắmremoveItem: Xóa một mặt hàng khỏi danh sách theo chỉ sốfindExpensiveItems: Tìm các mặt hàng có giá cao hơn một mức giá nhất địnhcalculateTotalCost: Tính tổng chi phí của tất cả mặt hàng
Mỗi mặt hàng trong danh sách mua sắm được biểu diễn bằng một chuỗi (tên) và một giá trị float64 (giá). Hàm main minh họa cách tất cả thao tác này phối hợp với nhau.
Tự làm thử
package main
import "fmt"
// addItems thêm các mặt hàng mới và giá của chúng vào danh sách mua sắm
func addItems(names []string, prices []float64, newNames []string, newPrices []float64) ([]string, []float64) {
// Viết code của bạn ở đây
return names, prices
}
// removeItem xóa mặt hàng tại chỉ số đã chỉ định
func removeItem(names []string, prices []float64, index int) ([]string, []float64) {
// Viết code của bạn ở đây
return names, prices
}
// findExpensiveItems trả về các mặt hàng có giá vượt ngưỡng
func findExpensiveItems(names []string, prices []float64, threshold float64) []string {
// Viết code của bạn ở đây
return nil
}
// calculateTotalCost trả về tổng giá của tất cả mặt hàng
func calculateTotalCost(prices []float64) float64 {
// Viết code của bạn ở đây
return 0
}
func main() {
// Khởi tạo danh sách mua sắm rỗng
names := []string{}
prices := []float64{}
// Thêm các mặt hàng ban đầu
initialNames := []string{"Apples", "Milk", "Bread"}
initialPrices := []float64{2.99, 3.49, 2.29}
names, prices = addItems(names, prices, initialNames, initialPrices)
// In ra danh sách mua sắm ban đầu
fmt.Println("Initial Shopping List:")
for i := range names {
fmt.Printf("%d. %s - $%.2f\n", i, names[i], prices[i])
}
// Tính và in ra tổng chi phí
total := calculateTotalCost(prices)
fmt.Printf("\nTotal Cost: $%.2f\n", total)
// Tìm và in ra các mặt hàng đắt tiền
priceThreshold := 3.00
expensiveItems := findExpensiveItems(names, prices, priceThreshold)
fmt.Printf("\nExpensive Items (above $%.2f):\n", priceThreshold)
for _, item := range expensiveItems {
fmt.Println(item)
}
// Thêm một mặt hàng mới
names, prices = addItems(names, prices, []string{"Cheese"}, []float64{4.99})
// Xóa một mặt hàng
names, prices = removeItem(names, prices, 1)
fmt.Println("\nRemoved item at index 1")
// In danh sách mua sắm cuối cùng
fmt.Println("\nFinal Shopping List:")
for i := range names {
fmt.Printf("%d. %s - $%.2f\n", i, names[i], prices[i])
}
}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 độ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