Menu
Coddy logo textTech

שמות מיוצאים לעומת שמות לא מיוצאים

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

ב-Go, האות הראשונה בשם קובעת את הנראות שלו. שמות שמתחילים באות גדולה הם מיוצאים (נגישים מחבילות אחרות). שמות שמתחילים באות קטנה אינם מיוצאים (פרטיים לחבילה).

שמות מיוצאים: גלויים מחוץ לחבילה

type User struct {
    Name  string  // שדה מיוצא
    Email string  // שדה מיוצא
}

func CreateUser(name string) User { // פונקציה מיוצאת
    return User{Name: name}
}

שמות שאינם מיוצאים: גלויים רק בתוך החבילה

type secret struct {     // מבנה שלא יוצא מהחבילה
    password string      // שדה שלא יוצא מהחבילה
}

func validate() bool {   // פונקציה שלא יוצאת מהחבילה
    return true
}

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

type Account struct {
    Username string    // מיוצא - נגיש מכל מקום
    Email    string    // מיוצא - נגיש מכל מקום
    password string    // לא מיוצא - נגיש רק בתוך החבילה
}

מוסכמת מתן השמות הזו מחליפה משנה גישה כמו public ו־private שקיימים בשפות אחרות.

// אות גדולה   = מיוצא (ציבורי)
// אות קטנה = לא מיוצא (פרטי)

func SaveData() {}  // מיוצא
func loadData() {}  // לא מיוצא

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

challenge icon

אתגר

בינוני

תקן את כל השמות בקובץ product.go כך שיתאימו למוסכמת השמות של Go עבור מזהים מיוצאים. כתוב את האות הראשונה באות גדולה של:

  • שם המבנה: product → Product
  • כל שמות השדות: name, price, stock
  • כל שמות הפונקציות: totalValue, displayInfo
  • כל ההפניות לשדות בתוך הפונקציות

נסו בעצמכם

package main

import "fmt"

func main() {
    var name string
    var price float64
    var stock int
    fmt.Scan(&name, &price, &stock)

    p := Product{
        Name:  name,
        Price: price,
        Stock: stock,
    }

    fmt.Println(DisplayInfo(p))
    fmt.Printf("Total Value: %.2f\n", TotalValue(p))
}
quiz iconבחנו את עצמכם

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

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

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