Podsumowanie — listy dynamiczne
Część sekcji Podstawy ścieżki GO w Coddy. Lekcja 83 z 109.
Wyzwanie
ŚredniPoćwiczmy pracę z wycinkami w Go, tworząc prosty menedżer listy zakupów!
Twoim zadaniem jest zaimplementowanie kilku funkcji, które modyfikują listę zakupów:
addItems: Dodaj nowe produkty do listy zakupówremoveItem: Usuń produkt z listy na podstawie indeksufindExpensiveItems: Znajdź produkty, których ceny przekraczają określony prógcalculateTotalCost: Oblicz łączny koszt wszystkich produktów
Każdy produkt na liście zakupów jest reprezentowany przez ciąg znaków (nazwę) i wartość float64 (cenę). Funkcja main pokazuje, jak wszystkie te operacje współdziałają.
Spróbuj swoich sił
package main
import "fmt"
// addItems dodaje nowe produkty i ich ceny do listy zakupów
func addItems(names []string, prices []float64, newNames []string, newPrices []float64) ([]string, []float64) {
// Tu wpisz swój kod
return names, prices
}
// removeItem usuwa produkt o podanym indeksie
func removeItem(names []string, prices []float64, index int) ([]string, []float64) {
// Tu wpisz swój kod
return names, prices
}
// findExpensiveItems zwraca produkty, których ceny przekraczają próg
func findExpensiveItems(names []string, prices []float64, threshold float64) []string {
// Tu wpisz swój kod
return nil
}
// calculateTotalCost zwraca sumę wszystkich cen
func calculateTotalCost(prices []float64) float64 {
// Tu wpisz swój kod
return 0
}
func main() {
// Zainicjalizuj puste listy zakupów
names := []string{}
prices := []float64{}
// Dodaj początkowe produkty
initialNames := []string{"Apples", "Milk", "Bread"}
initialPrices := []float64{2.99, 3.49, 2.29}
names, prices = addItems(names, prices, initialNames, initialPrices)
// Wyświetl początkową listę zakupów
fmt.Println("Initial Shopping List:")
for i := range names {
fmt.Printf("%d. %s - $%.2f\n", i, names[i], prices[i])
}
// Oblicz i wyświetl całkowity koszt
total := calculateTotalCost(prices)
fmt.Printf("\nTotal Cost: $%.2f\n", total)
// Znajdź i wyświetl drogie produkty
priceThreshold := 3.00
expensiveItems := findExpensiveItems(names, prices, priceThreshold)
fmt.Printf("\nExpensive Items (above $%.2f):\n", priceThreshold)
for _, item := range expensiveItems {
fmt.Println(item)
}
// Dodaj nowy produkt
names, prices = addItems(names, prices, []string{"Cheese"}, []float64{4.99})
// Usuń produkt
names, prices = removeItem(names, prices, 1)
fmt.Println("\nRemoved item at index 1")
// Wyświetl końcową listę zakupów
fmt.Println("\nFinal Shopping List:")
for i := range names {
fmt.Printf("%d. %s - $%.2f\n", i, names[i], prices[i])
}
}Wszystkie lekcje w sekcji Podstawy
4Operatory porównania i logiczne
Operatory porównania – część 1Operatory porównania – część 2Logiczny operator ANDLogiczny operator ORLogiczny operator NOTPodstawy kolejności wykonywania operatorówPodsumowanie – porównywanie7Sterowanie przepływem: pętle
Jak działa pętla `for`Pętla `for` — podstawyPętla `for` — tylko warunekSłowo kluczowe `break`Słowo kluczowe `continue`Pętle zagnieżdżonePodsumowanie — powtarzanie działań2Zmienne i podstawowe typy danych
Czym jest zmiennaWnioskowanie o typie za pomocą `:=`Liczby całkowite (int)Liczby zmiennoprzecinkoweWartości logiczneCiągi znakówWartości zeroweStałeKonwencje nazewnictwaPodsumowanie – zmienne i typy5Podstawowe wejście/wyjście
Formatowane wyjścieSpecyfikatory formatuWyświetlanie typówPobieranie podstawowych danych od użytkownikaPodsumowanie — wejście i wyjście8Funkcje
Zrozumienie funkcjiDeklarowanie funkcjiWywoływanie funkcjiParametry funkcjiZwracanie jednej wartościZwracanie wielu wartościNazwane wartości zwracanePodstawy zakresu funkcjiPodsumowanie — tworzenie wielokrotnego użytku kodu11Typy złożone: wycinki
Wprowadzenie do wycinkówDeklarowanie literałów wycinkówTworzenie wycinków za pomocą `make`Długość a pojemność wycinkaDostęp do elementów wycinkaDodawanie elementówWycinanie z istniejących wycinków i tablicIterowanie po wycinkachKopiowanie wycinkówPodsumowanie — listy dynamiczne3Podstawowe operatory
Operatory arytmetyczneOperator dzieleniaOperator moduloOperator przypisaniaOperatory przypisania z działaniemZwiększanie i zmniejszaniePowtórka – obliczenia6Sterowanie przepływem: instrukcje warunkowe
Instrukcja `if`Słowo kluczowe `else`Słowo kluczowe `else if`Przesłanianie zmiennych w `if`Inicjalizacja zmiennychInstrukcja `switch``switch` z wyrażeniami`switch` bez wyrażeniaSłowo kluczowe `fallthrough`Podsumowanie — podejmowanie decyzjiPoćwicz samodzielnie: Kompilator Go online