Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

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

جزء من قسم البرمجة كائنية التوجه في رحلة GO على Coddy. الدرس 4 من 107.

في Go، يحدد الحرف الأول من الاسم مستوى ظهوره. الأسماء التي تبدأ بـ capital letter تكون exported (accessible من other package). والأسماء التي تبدأ بـ lowercase letter تكون unexported (private بالنسبة إلى package).

Exported names: مرئية خارج package

type User struct {
    Name  string  // حقل مُصدَّر
    Email string  // حقل مُصدَّر
}

func CreateUser(name string) User { // دالة مُصدَّرة
    return User{Name: name}
}

Unexported names: مرئية فقط داخل package

type secret struct {     // هيكل غير مُصدَّر
    password string      // حقل غير مُصدَّر
}

func validate() bool {   // دالة غير مُصدَّرة
    return true
}

struct exported مختلط مع بعض الحقول غير المُصدّرة

type Account struct {
    Username string    // مُصدَّر - يمكن الوصول إليه من أي مكان
    Email    string    // مُصدَّر - يمكن الوصول إليه من أي مكان
    password string    // غير مُصدَّر - فقط داخل الحزمة
}

تحلّ قاعدة naming هذه محلّ معدِّلات الوصول مثل public وprivate الموجودة في لغات أخرى.

// الحرف الكبير   = مُصدَّر (عام)
// الحرف الصغير = غير مُصدَّر (خاص)

func SaveData() {}  // مُصدَّر
func loadData() {}  // غير مُصدَّر

اتباع هذه convention أمر ضروري في Go. عندما تستورد حزم أخرى شفرتك، لا يمكنها الوصول إلا إلى names التي تبدأ بحرف Capital.

challenge icon

التحدي

متوسط

أصلح جميع الأسماء في product.go لتتبع convention التسمية المُصدَّرة في Go. اجعل الحرف الأول كبيرًا في:

  • اسم struct: productProduct
  • جميع أسماء field: name وprice وstock
  • جميع أسماء function: totalValue وdisplayInfo
  • جميع مراجع field داخل function

جرّب بنفسك

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 عبر الإنترنت