Menu
Coddy logo textTech

Slice הוא מערך

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

אם לא ברור לך איך פרוסה קשורה למערך, בואו נבהיר את זה. ב-Go, פרוסה היא למעשה הפניה למערך, והמערך הזה נקרא "מערך גיבוי". כדי להבין זאת, נבחן דוגמה:

נניח שיש לנו פרוסה כזאת:

str := []string{"Coddy", "Learn", "Play", "test"}

האם לדעתך הפרוסה str מאחסנת את ארבעת האיברים האלה ישירות? התשובה היא לא, כי הפרוסה עצמה לא מאחסנת איברים ישירות.

מה שקורה מאחורי הקלעים כשאנחנו יוצרים פרוסה כזאת הוא ש-Go יוצר מערך בזיכרון ואז מחזיר ערך פרוסה שמצביע למערך הזה. המערך הזה נקרא מערך הגיבוי של הפרוסה. לכן, מה שמאחסן בפועל את האיברים הוא מערך הגיבוי, ולא הפרוסה.

אפשר לשתף את מערך הגיבוי הזה בין פרוסות אחרות. לדוגמה:

str := []string{"Coddy", "Learn", "Play", "test"}
slice1 := str[0:3]
slice2 := str[1:4]

בדוגמה הזאת, slice1 ו-slice2 חולקות את אותו מערך גיבוי. אפשר לראות שפעולת פריסה לא יוצרת מערך גיבוי חדש; במקום זאת, היא יוצרת פרוסה שמתייחסת לחלק כלשהו מאותו מערך גיבוי.

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

בכל פעם שאנחנו משנים את הפרוסה המקורית, גם פרוסות אחרות ישקפו את השינויים האלה, כי הן מסתכלות על אותו מערך גיבוי. לדוגמה, אם נשנה את "Learn" ל-"Fun", זה ייראה כך:

לכן, חשוב לדעת שליטרל של פרוסה (name := []string{}) תמיד יוצר מערך גיבוי מאחורי הקלעים.

נסו בעצמכם

השיעור הזה לא כולל אתגר קוד.

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

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