English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
مؤشر هو متغير في لغة البرمجة Go، يستخدم لتخزين عنوان متغير آخر. مؤشر هو متغير خاص، لذا يمكنه أن يشير إلى أي نوع متغير. في الأساس، يبدو هذا مثل سلسلة من المؤشرات. عندما نحدد مؤشرًا يتجه إلى مؤشر، سيستخدم المؤشر الأول لتخزين عنوان المؤشر الثاني. هذا المفهوم يُدعى أحيانًامؤشران.
كيفية إعلان مؤشر يتجه إلى مؤشر في Golang؟
لإعلان مؤشر كـPointer كما يتم إعلان مؤشر في Go. الفرق هو أننا يجب أن نضع رمزًا إضافيًا قبل اسم مؤشر * عادة، عندما نستخدمكلمة المفتاح varعند إكمال عملية إعلان متغيرات النوع عند إكمال هذه العملية.
مثال 1:في البرنامج التالي، مؤشرpt2المخزنةpt1عنوان مؤشر. التدليلpt2بالمعنى أن* pt2سيتم تقديم المتغيرvعنوان المتغير، أو يمكنك أيضًا القول إلى مؤشرpt1القيمة. إذا حاولت** pt2،إذن سيتم تقديم المتغيرvالقيمة، أي 100.
package main import "fmt" func main() { //متغير من نوع integer var V int = 100 //الحصول على إشارة //نوع integer var pt1 *int = &V //الحصول على الإشارة //عنوان الإشارة المحفوظة في pt1 //تحويل pt1 إلى pt2 var pt2 **int = &pt1 fmt.Println("قيمة المتغير V = ", V) fmt.Println("عنوان المتغير V = ", &V) fmt.Println("قيمة pt1 = ", pt1) fmt.Println("عنوان pt1 = ", &pt1) fmt.Println("قيمة pt2 = ", pt2) //الاستدلال //الإشارة إلى الإشارة fmt.Println("عنوان pt2 = (*pt2) = ", *pt2) //الإشارات الثنائية تعطي قيمة المتغير V fmt.Println("*(القيمة في عنوان pt2) أو **pt2 = ", **pt2) }
الإخراج:
قيمة المتغير V = 100 عنوان المتغير V = 0xc000062090 قيمة pt1 = 0xc000062090 عنوان pt1 = 0xc00008c018 قيمة pt2 = 0xc00008c018 عنوان pt2 = (*pt2) = 0xc000062090 *(القيمة في عنوان pt2) أو **pt2 = 100
مثال 2:لنقوم ببعض التغييرات في البرنامج أعلاه. من خلال استخدام التغيير بالاستدلال لتغيير قيمة الإشارة وتخصيص بعض القيم الجديدة لها كما يلي:
//لشرح مفهوم الإشارات إلى الإشارات في لغة Go package main import "fmt" func main() { //تعريف متغير من نوع int var v int = 100 //إشارة من نوع integer var pt1 *int = &v //الحصول على الإشارة //عنوان الإشارة المحفوظة في pt1 //تحويل pt1 إلى pt2 var pt2 **int = &pt1 fmt.Println("قيمة المتغير v = ", v) //تغيير قيمة v من خلال الربط //القيمة الجديدة للإشارة pt1 *pt1 = 200 fmt.Println("القيمة المخزنة في v بعد تغيير pt1 = ", v) //تغيير قيمة v من خلال الربط //القيمة الجديدة للإشارة pt2 **pt2 = 300 fmt.Println("القيمة المخزنة في v بعد تغيير pt2 = ", v) }
الإخراج:
قيمة المتغير v = 100 القيمة المخزنة في v بعد تغيير pt1 = 200 القيمة المخزنة في v بعد تغيير pt2 = 300
المعلومات ذات الصلة:الإشارة في Go