Menu
CoddyTech

الأسماء المصدرة مقابل غير المصدرة

جزء من قسم البرمجة كائنية التوجه في رحلة 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 عبر الإنترنت