في GO ، يسمح استخدام الكلمة الرئيسية المؤجلة بالوظائف بتنفيذ رمز في وقت عودتها ، حتى إذا حدث الذعر. ومع ذلك ، عندما يتعلق الأمر بالمتغيرات المعلنة بطرق مختلفة داخل وظيفة ما ، يمكن أن تختلف النتائج ، مما يؤدي إلى الارتباك. تأجيل func () {i} () العودة أنا } Func Main () { fmt.println (c (0)) // prints 0 }
هنا ، تم إعلانني كمعلمة نتيجة لوظيفة C1. عند تنفيذ عبارة الإرجاع ، يتم تعيين قيمة I على قيمة الإرجاع. ومع ذلك ، لا يزال مسموحًا بوظيفة التأجيل بتعديل قيمة I قبل إرجاعها. ينتج عن هذا الإخراج 1. تأجيل func () {i} () العودة 2 } Func Main () { fmt.println (c2 ()) // prints 3 }
func c(i int) int { defer func() { i }() return i } func main() { fmt.Println(c(0)) // Prints 0 }
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3