מחיקת איבר
שיעור 14 מתוך 21 בקורס פרוסות ומפות ב-GoLang של Coddy.
עד עכשיו למדנו איך להוסיף איברים לפרוסה, איך להעתיק פרוסה, איך להשוות בין פרוסות ואיך לקבל את האורך של פרוסה.
ועכשיו השאלה: איך מוחקים איבר מסוים מפרוסה?
למרבה הצער, אין פונקציה מובנית למשימה הזו, אבל אם נשלב את מה שלמדנו, נוכל לבצע את הפעולה הזו.
נניח שיש לנו פרוסה כזו:
books := []string{"Golang", "JavaScript", "Java", "Python", "PostgreSQL", "TypeScript"}האם תוכלו לחשוב מה אפשר לעשות אם נצטרך לקבל פרוסה חדשה ללא איבר מסוים, למשל להסיר את "PostgreSQL"?
כאן נוכל להשתמש באופרטורים של פרוסות, אם אתם זוכרים:
books := []string{"Golang", "JavaScript", "Java", "Python", "PostgreSQL", "TypeScript"}
fmt.Println(books[:4])
fmt.Println(books[5:])נקבל שתי פרוסות כאלה:
[Golang JavaScript Java Python]
[TypeScript]כאן הסרנו בהצלחה את האיבר "PostgreSQL", אבל עלינו לשלב את הפרוסות האלה לאחת. לכן נוכל להשתמש בפונקציה <strong>append</strong> כדי לשרשר את שתי הפרוסות:
books := []string{"Golang", "JavaScript", "Java", "Python", "PostgreSQL", "TypeScript"}
books = append(books[:4], books[5:]...)
fmt.Println(books)בקוד הזה, אנחנו משתמשים בפונקציה <strong>append</strong> כדי להוסיף את הפרוסה השנייה (<strong>books[5:]</strong>) לחלק הראשון (<strong>books[:4]</strong>). שימו לב שאנחנו משתמשים ב-<strong>...</strong> כדי להפוך את החלק השני לאיברים נפרדים ולהוסיף אותם לחלק הראשון.
התוצאה תהיה:
[Golang JavaScript Java Python TypeScript]הסרנו בהצלחה את הפריט "PostgreSQL" מהפרוסה <strong>books</strong>.
אתגר
קלכתבו תוכנית שקולטת קלט מהמשתמש ומוחקת מה-slice את האיבר שהמספר שהמשתמש סיפק מציין את האינדקס שלו, כדי למחוק אותו.
נסו בעצמכם
package main
import "fmt"
func main() {
// קבל קלט מהמשתמש אל תשנו את זה!
var x int
fmt.Scanln(&x)
// הגדר slice אל תשנו את זה!
lang := []string{"Rust", "Java", "JavaScript", "Golang", "Haskell", "C#"}
// מחק את הפריט באינדקס שצוין
// הדפס את ה-slice המעודכן
}כל השיעורים ביחידה פרוסות ומפות ב-GoLang
3מה מסתתר מאחורי ה-Slice
Slice הוא מערךיצירת Slice באמצעות makeהעתקת Sliceמחיקת איבראתגר סיכום #1אתגר סיכום #2תרגלו בעצמכם: קומפיילר Go אונליין