Menu
CoddyTech

Итоги: Динамические списки

Часть раздела Основы путешествия по GO на Coddy. Урок 83 из 109.

challenge icon

Задание

Средне

Давай потренируемся работать со срезами в Go, создав простой менеджер списка покупок!

Твоя задача — реализовать несколько функций для работы со списком покупок:

  1. addItems: Добавляет новые товары в список покупок
  2. removeItem: Удаляет товар из списка по индексу
  3. findExpensiveItems: Находит товары, цена которых выше заданного порога
  4. calculateTotalCost: Вычисляет общую стоимость всех товаров

Каждый товар в списке покупок представлен строкой (название) и значением float64 (цена). Функция main демонстрирует совместную работу всех этих операций.

Попробуйте сами

package main

import "fmt"

// addItems добавляет новые товары и их цены в список покупок
func addItems(names []string, prices []float64, newNames []string, newPrices []float64) ([]string, []float64) {
	// Ваш код здесь
	return names, prices
}

// removeItem удаляет товар по указанному индексу
func removeItem(names []string, prices []float64, index int) ([]string, []float64) {
	// Ваш код здесь
	return names, prices
}

// findExpensiveItems возвращает товары, цены которых превышают пороговое значение
func findExpensiveItems(names []string, prices []float64, threshold float64) []string {
	// Ваш код здесь
	return nil
}

// calculateTotalCost возвращает сумму всех цен
func calculateTotalCost(prices []float64) float64 {
	// Ваш код здесь
	return 0
}

func main() {
	// Инициализируйте пустые списки покупок
	names := []string{}
	prices := []float64{}
	
	// Добавьте исходные товары
	initialNames := []string{"Apples", "Milk", "Bread"}
	initialPrices := []float64{2.99, 3.49, 2.29}
	
	names, prices = addItems(names, prices, initialNames, initialPrices)
	
	// Выведите исходный список покупок
	fmt.Println("Initial Shopping List:")
	for i := range names {
		fmt.Printf("%d. %s - $%.2f\n", i, names[i], prices[i])
	}
	
	// Вычислите и выведите общую стоимость
	total := calculateTotalCost(prices)
	fmt.Printf("\nTotal Cost: $%.2f\n", total)
	
	// Найдите и выведите дорогие товары
	priceThreshold := 3.00
	expensiveItems := findExpensiveItems(names, prices, priceThreshold)
	
	fmt.Printf("\nExpensive Items (above $%.2f):\n", priceThreshold)
	for _, item := range expensiveItems {
		fmt.Println(item)
	}
	
	// Добавьте новый товар
	names, prices = addItems(names, prices, []string{"Cheese"}, []float64{4.99})
	
	// Удалите товар
	names, prices = removeItem(names, prices, 1)
	fmt.Println("\nRemoved item at index 1")
	
	// Выведите итоговый список покупок
	fmt.Println("\nFinal Shopping List:")
	for i := range names {
		fmt.Printf("%d. %s - $%.2f\n", i, names[i], prices[i])
	}
}

Все уроки раздела Основы

Потренируйтесь самостоятельно: Онлайн-компилятор Go