Menu
Coddy logo textTech

העתקת Slice

שיעור 13 מתוך 21 בקורס פרוסות ומפות ב-GoLang של Coddy.

ב-Go יש כמה פונקציות מובנות שאפשר להשתמש בהן עם פרוסות, וכבר השתמשנו באחת מהן בשיעור הקודם — הפונקציה <strong>append</strong>. היא מאפשרת לנו להוסיף איברים לפרוסה קיימת. אנחנו קוראים לפונקציות האלה פונקציות עזר, ואפשר להוסיף זאת להבדל בין מערכים לפרוסות ב-Go: למערכים אין פונקציות כאלה.

בשיעור הזה נדבר על הפונקציה <strong>copy</strong>, שמאפשרת לנו להעתיק פרוסה, והיא פועלת כך:

str := []string{"Python", "Golang", "Java", "TypeScript"}
newStr := make([]string, 4)
copy(newStr, str)
fmt.Println(newStr)

זה יהיה הפלט:

[Python Golang Java TypeScript]

בעזרת הפונקציה <strong>copy</strong>, אנחנו מעתיקים את האיברים מהפרוסה <strong>str</strong> לפרוסה <strong>newStr</strong>. התחביר הוא כזה: <strong>copy(destination, source)</strong>.

עכשיו, מה אם הקיבולת של הפרוסה החדשה קטנה מזו של פרוסת המקור? נראה דוגמה:

str := []string{"Python", "Golang", "Java", "TypeScript"}
newStr := make([]string, 3)
copy(newStr, str)
fmt.Println(newStr)

אם נריץ את הקוד, נקבל:

[Python Golang Java]

מכיוון שהקיבולת של הפרוסה החדשה היא 3, יש מקום לשלושה איברים בלבד.

נראה דוגמה למקרה ההפוך:

str := []int{23, 34, 56, 77}
newStr := make([]int, 6)
copy(newStr, str)
fmt.Println(newStr)

כאן, הקיבולת של הפרוסה החדשה גדולה מזו של פרוסת המקור, ולכן האיברים יועתקו לתוצאה, ובשאר המקומות יופיע ערך ברירת המחדל, שהוא 0 במקרה של int:

[23 34 56 77 0 0]
challenge icon

אתגר

קל

כתוב תוכנית שמקבלת שני פרוסות וממזגת אותן לפרוסה חדשה, ואז מדפיסה אותה למסך.

בקוד הנתון, אנחנו מגדירים שתי פרוסות של מספרים שלמים.

כאן תצטרך להשתמש באופרטור הפרוסה יחד עם פונקציית ההעתקה.

היעזר ברמזים אם דרושה לך עזרה נוספת.

נסו בעצמכם

package main

import (
	"fmt"
)

func main() {
    // שני Slices — אל תשנו אותם!
	str := []int{1, 2, 3, 4}
	str2 := []int{5, 6, 7, 8}
	// הגדירו Slice חדש 
 
    // העתיקו איבר
 
	// העתיקו באמצעות האופרטור Slice
	 
    // הדפיסו את ה-Slice החדש
	fmt.Println()

}

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

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