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

أساسيات نطاق الدالة

جزء من قسم Fundamentals في رحلة GO على Coddy — الدرس 58 من 109.

في لغة Go، المتغيرات المعلن عنها داخل دالة يمكن الوصول إليها فقط داخل تلك الدالة. يُسمى هذا بنطاق الدالة (function scope).

أنشئ دالة بمتغير محلي:

func calculateTotal(price int, quantity int) int {
    tax := 0.1 * float64(price * quantity)  // متغير محلي
    total := price * quantity + int(tax)
    return total
}

func main() {
    result := calculateTotal(10, 2)
    fmt.Println("Total:", result)
    // fmt.Println(tax)  // خطأ: لا يمكن الوصول إلى tax هنا
}

يُظهر الناتج القيمة المرجعة فقط:

Total: 22

المتغير tax موجود فقط داخل الدالة calculateTotal ولا يمكن الوصول إليه من main.

challenge icon

التحدي

مبتدئ

في هذا التحدي، ستتدرب على فهم نطاق الدوال (function scope) في لغة Go. ستحتاج إلى إصلاح برنامج بسيط يعاني من مشكلة في النطاق.

يحتوي البرنامج على متغير عام message ودالة تحاول تعديله. مهمتك هي إصلاح الكود بحيث تقوم الدالة بتحديث المتغير العام بشكل صحيح.

ورقة مرجعية

المتغيرات المعلن عنها داخل دالة لا يمكن الوصول إليها إلا داخل تلك الدالة (نطاق الدالة):

func calculateTotal(price int, quantity int) int {
    tax := 0.1 * float64(price * quantity)  // متغير محلي
    total := price * quantity + int(tax)
    return total
}

func main() {
    result := calculateTotal(10, 2)
    fmt.Println("Total:", result)
    // fmt.Println(tax)  // خطأ: لا يمكن الوصول إلى tax هنا
}

المتغيرات المحلية توجد فقط داخل دالتها ولا يمكن الوصول إليها من الخارج.

جرّب بنفسك

package main

import "fmt"

// متغير عالمي
var message string = "Hello from global scope"

func updateMessage() {
    // هذا ينشئ متغيراً محلياً جديداً بدلاً من تعديل المتغير العالمي
    message := "Hello from function scope"
    fmt.Println("Inside function:", message)
}

func main() {
    fmt.Println("Before function call:", message)
    updateMessage()
    
    // TODO: الرسالة العالمية لا تزال بالقيمة الأصلية
    // قم بتعديل الدالة updateMessage() لتغيير المتغير العالمي
    fmt.Println("After function call:", message)
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Fundamentals