Menu
Coddy logo textTech

אתחול Struct

חלק מהיחידה תכנות מונחה עצמים במסלול ה-GO של Coddy. שיעור 9 מתוך 107.

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

אתחול שדות בעלי שם

type Person struct {
    Name string
    Age  int
    City string
}

p1 := Person{
    Name: "Alice",
    Age:  25,
    City: "New York",
}

אתחול לפי מיקום (הסדר חייב להתאים להצהרת השדות)

p2 := Person{"Bob", 30, "London"}

אתחול לערך אפס (כל השדות מקבלים ערכי ברירת מחדל)

p3 := Person{}
// Name: "", Age: 0, City: ""

אתחול חלקי (שדות שלא הוגדרו מקבלים ערכי אפס)

p4 := Person{Name: "Charlie"}
// Name: "Charlie", Age: 0, City: ""

מצביע למבנה באמצעות &

p5 := &Person{
    Name: "Diana",
    Age:  28,
    City: "Paris",
}
fmt.Println(p5.Name) // Diana

שימוש ב־var ולאחר מכן השמת ערכים בשדות

var p6 Person
p6.Name = "Eve"
p6.Age = 22

אתחול שדות בשמות הוא הגישה הנפוצה והקריאה ביותר. השתמשו ב־& כשאתם צריכים מצביע למבנה.

challenge icon

אתגר

בינוני

צרו שלושה אובייקטים מסוג Player באמצעות שיטות אתחול שונות:

  • player1: אתחול שדות בשמות באמצעות ערכי הקלט
  • player2: אתחול שדות בשמות עם Name: "Guest", Class: "Novice", HitPoints: 50
  • player3: השתמשו בהצהרת var ואז הקצו ערך לכל שדה בנפרד

נסו בעצמכם

package main

import "fmt"

func main() {
    var name, class string
    var hp int
    fmt.Scan(&name, &class, &hp)

    // TODO: צרו את player1 באמצעות אתחול שדות בשמותיהם עם ערכי הקלט

    // TODO: צרו את player2 באמצעות אתחול שדות בשמותיהם:
    // Name: "Guest", Class: "Novice", HitPoints: 50

    // TODO: צרו את player3 באמצעות הצהרת var, ולאחר מכן הקצו ערכים לשדות:
    // Name: "Hero", Class: "Knight", HitPoints: 200

    fmt.Printf("Player 1: %s (%s) - HP: %d\n", player1.Name, player1.Class, player1.HitPoints)
    fmt.Printf("Player 2: %s (%s) - HP: %d\n", player2.Name, player2.Class, player2.HitPoints)
    fmt.Printf("Player 3: %s (%s) - HP: %d\n", player3.Name, player3.Class, player3.HitPoints)
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה תכנות מונחה עצמים

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