Menu
CoddyTech

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.

challenge icon

Thử thách

Trung bình

Hã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:

  1. addItems: Thêm mặt hàng mới vào danh sách mua sắm
  2. removeItem: Xóa một mặt hàng khỏi danh sách theo chỉ số
  3. findExpensiveItems: Tìm các mặt hàng có giá cao hơn một mức giá nhất định
  4. calculateTotalCost: 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

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