فهم وظيفة الكلمة الرئيسية المؤجلة لـ Go
عند العمل مع Go، يعد فهم سلوك الكلمة الأساسية المؤجلة أمرًا بالغ الأهمية. تسمح هذه الكلمة الأساسية للمطورين بتأجيل تنفيذ الوظيفة حتى تعود الوظيفة المحيطة. ومع ذلك، من المهم ملاحظة أنه يتم تقييم قيمة الوظيفة ومعلماتها عند تنفيذ عبارة التأجيل.
مثال: تقييم أمر التأجيل
لتوضيح ذلك، ضع في اعتبارك ما يلي الكود:package main
import "fmt"
func main() {
defer having()(fun("with Go."))
fmt.Print("some ") // evaluation order: 3
}
func having() func(string) {
fmt.Print("Go ") // evaluation order: 1
return funWithGo
}
func fun(msg string) string {
fmt.Print("have ") // evaluation order: 2
return msg
}
func funWithGo(msg string) {
fmt.Println("fun", msg) // evaluation order: 4
}
في هذا المثال، يتم تنفيذ التعليمات البرمجية بالترتيب التالي:تطبيق مبدأ التأجيل
لحل المشكلة المذكورة في الاستعلام الأصلي، يمكننا استخدام الكلمة الأساسية التأجيل لطباعة سعر التذكرة بشكل صحيح بناءً على على السن المدخلة. يوجد أدناه نسخة معدلة من الكود:
package main
import "fmt"
func main() {
age := 999
defer fmt.Println("Your age is:", getAge(&age)) // defer printing the age
defer fmt.Println("Your ticket price is:", getTicketPrice(age)) // defer printing the ticket price
}
func getTicketPrice(age int) float64 {
// Calculate ticket price based on age
// logic can be customized here
fmt.Println("...order is 2...")
switch {
case age 13 && age في هذا الرمز المعدل، نستفيد بشكل صحيح من الكلمة الرئيسية المؤجلة لضمان طباعة العمر وسعر التذكرة بعد تنفيذ الوظائف المعنية، مما يؤدي إلى حل المشكلة الأولية.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3