Menu
Coddy logo textTech

יצירת Slice באמצעות make

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

בשיעורים האחרונים יצרנו פרוסות באמצעות ליטרלים של פרוסות. עם זאת, קיימת פונקציה נוספת שנקראת <strong>make</strong>. היא מאפשרת לך להקצות מערך גיבוי לפרוסה עם אורך וקיבולת נתונים. הסיבה שיש פונקציה כמו <strong>make</strong> היא שלפרוסה אין אורך מוגדר מראש. לכן, הפונקציה <strong>make</strong> מאפשרת לך ליצור פרוסה באורך מוגדר.

אבל אל תטעה; האורך שלה לא הופך לקבוע. עדיין אפשר להוסיף לה איברים.

התחביר של הפונקציה <strong>make</strong> הוא כך:

mySlice = make([]string, 4)

פשוט משתמשים ב-<strong>make</strong>, והארגומנט הראשון (<strong>[]string</strong>) מתאר את סוג הפרוסה, ואילו הארגומנט השני (<strong>4</strong>) מציין ל-<strong>make</strong> מה האורך הנדרש לפרוסה שלנו. הארגומנט השני מתאר גם את הקיבולת של מערך הגיבוי. לכן, האורך והקיבולת של הפרוסה המוחזרת נעשים שווים.

 

כעת, השאלה היא למה צריך להשתמש בפונקציה <strong>make</strong> כדי ליצור פרוסה, אם אפשר פשוט להשתמש בליטרל פרוסה רגיל?

ובכן, התשובה היא שבמצבים מסוימים אנחנו צריכים להוסיף ערכים חדשים לפרוסה, ואם אין לה קיבולת מספקת, ייווצר מערך גיבוי חדש. הפעולה הזאת יקרה מעט מבחינת זיכרון, כי היא דורשת הקצאה מחדש. הפונקציה <strong>make</strong> מונעת את ההקצאה מחדש הזאת באמצעות הקצאה מראש של מקום בזיכרון.

באמצעות <strong>make</strong>, אפשר לציין גם אורך וגם קיבולת עם ערכים שונים, כך:

mySlice = make([]string, 4, 6)

באופן כללי, אפשר לייצג את הפונקציה <strong>make</strong> כפי שמוצג להלן:


challenge icon

אתגר

קל

בעזרת הפונקציה <strong>make</strong>, צור פרוסה בשם <strong>coddy</strong> עם אורך של 4 וקיבולת של 5.

  • הוסף את הערך "Learn Golang" לאינדקס 0. 
  • הוסף את הערך "Coddy.tech" לאינדקס 3.
  • עבור על הפרוסה הזו באמצעות מילת המפתח <strong>range</strong> והדפס למסך את האינדקס ואת הערך .

נסו בעצמכם

package main

import "fmt"

func main() {
    // צור את הפרוסה coddy באמצעות make  
    
 	// הוסף איברים באינדקסים 0 ו-3


    // עבור על איברי הפרוסה coddy



}

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

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