English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
先决条件:متغيرات لغة Go
变量的作用域可以定义为可访问特定变量的程序的一部分。可以在类,方法,循环等中定义变量。像C / C ++一样,在Golang中,所有的标识符都是词法(或静态)作用域,即变量的作用域可以在编译时确定。或者你可以说一个变量只能从定义它的代码块中调用。
Golang变量的范围规则可以分为两类,具体取决于声明变量的位置:
局部变量(在块或函数内部声明)
المتغيرات العالمية(在块或函数外部声明)
在函数或块中声明的变量称为局部变量。这些不能在函数或块之外访问。
这些变量也可以在函数内的for,while语句等内部声明。
但是,这些变量可以由函数内的嵌套代码块访问。
这些变量也称为块变量。
如果在同一作用域中用相同的名称声明两次这些变量,则会出现编译时错误。
函数执行结束后,这些变量将不存在。
在循环外声明的变量也可以在嵌套循环内访问。这意味着方法和所有循环都可以访问全局变量。局部变量可被循环访问,并在该函数内执行函数。
在循环体内声明的变量对循环体外不可见。
//局部变量 package main import "fmt" //主函数 func main() { //从这里开始主函数的局部作用域 // متغيرات محلية داخل الدالة الرئيسية var myvariable1, myvariable2 int = 69, 145 // 显示变量的值 fmt.Printf("myvariable1 变量的值 : %d\n", myvariable1) fmt.Printf("قيمة المتغير myvariable2 هي: %d\n", myvariable2) }
الإخراج:
قيمة المتغير myvariable1 هي: 69 قيمة المتغير myvariable2 هي: 145
تسمى المتغيرات التي يتم تعريفها خارج أي دالة أو قطعة متغيرات عالمية.
تتوفر طوال حياة البرنامج.
تُعلن في أعلى البرنامج خارج أي دالة أو قطعة.
يمكن الوصول إليها من أي جزء من البرنامج.
// المتغيرات العالمية package main import "fmt" // إعلان المتغيرات العالمية var myvariable1 int = 100 func main() { // متغير محلي داخل الدالة الرئيسية var myvariable2 int = 200 // عرض المتغير العالمي fmt.Printf("قيمة المتغير العالمي myvariable1 هي: %d\n", myvariable1) // عرض المتغير المحلي fmt.Printf("قيمة المتغير المحلي myvariable2 هي: %d\n", myvariable2) // استدعاء الدالة display() } func display() { // عرض المتغير العالمي fmt.Printf("قيمة المتغير العالمي myvariable1 هي: %d\n", myvariable1) }
الإخراج:
قيمة المتغير العالمي myvariable1 هي: 100 قيمة المتغير المحلي myvariable2 هي: 200 قيمة المتغير العالمي myvariable1 هي: 100
ملاحظة:ماذا سيحدث إذا كان هناك متغير محلي يحمل نفس الاسم المتغير العالمي داخل الدالة؟
الإجابة بسيطة، وهي أن الماكينير يفضل المتغيرات المحلية. عادةً، عندما يتم تعريف متغيرين بهما نفس الاسم، يحدث خطأ في وقت التجميع. ولكن إذا تم تعريف المتغيرين في نطاقين مختلفين، فإن الماكينير يسمح بذلك. طالما تم تعريف متغير محلي يحمل نفس الاسم المتغير العالمي، فإن الماكينير يفضل هذا المتغير المحلي.
مثال:في البرنامج أدناه، يمكنك رؤية الإخراج بوضوح. لأن قيمة myvariable1 هي 200، مما يقدم في الدالة main. لذلك، يمكن القول أن المتغيرات المحلية لها أولوية أعلى من المتغيرات العالمية.
// يظهر برنامج Go أهتمام الماكينير في الترتيب // متغير محلي على المتغير العالمي package main import "fmt" // إعلان المتغيرات العالمية var myvariable1 int = 100 func main() { // متغيرات محلية داخل الدالة الرئيسية // نفس المتغير العالمي var myvariable1 int = 200 // عرض fmt.Printf("قيمة المتغير myvariable1 هي: %d\n", myvariable1) }
الإخراج:
قيمة المتغير myvariable1 هي: 200