Menu
Coddy logo textTech

מחיקת איבר

שיעור 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>.
 

challenge icon

אתגר

קל

כתבו תוכנית שקולטת קלט מהמשתמש ומוחקת מה-slice את האיבר שהמספר שהמשתמש סיפק מציין את האינדקס שלו, כדי למחוק אותו.

נסו בעצמכם

package main

import "fmt"

func main() {
	// קבל קלט מהמשתמש  אל תשנו את זה!
	var x int
	fmt.Scanln(&x)
	
	// הגדר slice אל תשנו את זה!
	lang := []string{"Rust", "Java", "JavaScript", "Golang", "Haskell", "C#"}
	
	// מחק את הפריט באינדקס שצוין
 

	// הדפס את ה-slice המעודכן
	 
}

כל השיעורים ביחידה פרוסות ומפות ב-GoLang

תרגלו בעצמכם: קומפיילר Go אונליין