סיכום – רשימות דינמיות
חלק מהיחידה יסודות במסלול ה-GO של Coddy. שיעור 83 מתוך 109.
אתגר
בינונינתרגל עבודה עם פרוסות ב-Go באמצעות יצירת מנהל פשוט של רשימת קניות!
המשימה שלך היא לממש כמה פונקציות שמשנות רשימת קניות:
addItems: הוספת פריטים חדשים לרשימת הקניותremoveItem: הסרת פריט מהרשימה לפי אינדקסfindExpensiveItems: מציאת פריטים שמחיריהם מעל סף מסויםcalculateTotalCost: חישוב העלות הכוללת של כל הפריטים
כל פריט ברשימת הקניות מיוצג באמצעות מחרוזת (שם) ו-float64 (מחיר). הפונקציה הראשית מדגימה את הפעולות האלה כשהן פועלות יחד.
נסו בעצמכם
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])
}
}כל השיעורים ביחידה יסודות
4אופרטורי השוואה ולוגיקה
אופרטורי השוואה – חלק 1אופרטורי השוואה – חלק 2אופרטור AND לוגיאופרטור OR לוגיאופרטור NOT לוגייסודות קדימות אופרטוריםסיכום – ביצוע השוואות7זרימת בקרה: לולאות
הסבר על לולאת `for`לולאת `for` – בסיסיתלולאת `for` – תנאי בלבדמילת המפתח `break`מילת המפתח `continue`לולאות מקוננותסיכום – חזרה על פעולות2משתנים וסוגי נתונים בסיסיים
מהו משתנההסקת טיפוס באמצעות `:=`מספרים שלמים (int)מספרים בנקודה צפהערכים בוליאנייםמחרוזותערכי אפסקבועיםמוסכמות לשמותסיכום – משתנים וטיפוסים8פונקציות
הבנת פונקציותהצהרה על פונקציהקריאה לפונקציותפרמטרים של פונקציההחזרת ערך יחידהחזרת מספר ערכיםערכי החזרה בעלי שםיסודות תחום ההשפעה של פונקציהסיכום - יצירת קוד לשימוש חוזר11טיפוסים מורכבים: Slices
מבוא ל-Slicesהצהרת Literals של Sliceיצירת Slices באמצעות `make`אורך Slice לעומת קיבולתגישה לאיברים ב-Sliceהוספת איבריםחיתוך Slices/מערכים קיימיםמעבר על Slicesהעתקת Slicesסיכום – רשימות דינמיות3אופרטורים בסיסיים
אופרטורים אריתמטייםאופרטור חילוקאופרטור מודולואופרטור השמהאופרטורי השמה מורחבתהגדלה והקטנהסיכום – חישובים6זרימת בקרה: תנאים
פקודת `if`מילת המפתח `else`מילת המפתח `else if`הסתרת משתנים בתוך `if`אתחול משתניםפקודת `switch``switch` עם ביטויים`switch` ללא ביטוימילת המפתח `fallthrough`סיכום - קבלת החלטותתרגלו בעצמכם: קומפיילר Go אונליין