"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > गो का डिफ़र कीवर्ड फ़ंक्शन निष्पादन क्रम में कैसे काम करता है?

गो का डिफ़र कीवर्ड फ़ंक्शन निष्पादन क्रम में कैसे काम करता है?

2024-11-06 को प्रकाशित
ब्राउज़ करें:995

How Does Go\'s Defer Keyword Work in Function Execution Order?

गो के डिफर कीवर्ड की कार्यक्षमता को समझना

गो के साथ काम करते समय, डिफर कीवर्ड के व्यवहार को समझना महत्वपूर्ण है। यह कीवर्ड डेवलपर्स को किसी फ़ंक्शन के निष्पादन को तब तक स्थगित करने की अनुमति देता है जब तक कि आसपास का फ़ंक्शन वापस नहीं आ जाता। हालाँकि, यह ध्यान रखना महत्वपूर्ण है कि फ़ंक्शन के मान और मापदंडों का मूल्यांकन तब किया जाता है जब डिफर स्टेटमेंट निष्पादित होता है।

उदाहरण: डिफर ऑर्डर का मूल्यांकन

इसे स्पष्ट करने के लिए, निम्नलिखित पर विचार करें कोड:

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
}

इस उदाहरण में, कोड को निम्नलिखित क्रम में निष्पादित किया जाता है:

  1. होने वाले फ़ंक्शन का मूल्यांकन किया जाता है और एक फ़ंक्शन लौटाता है जो एक स्ट्रिंग को इनपुट के रूप में लेता है (मूल्यांकन क्रम: 1)
  2. मजेदार फ़ंक्शन का मूल्यांकन "विथ गो" से किया जाता है। इनपुट के रूप में स्ट्रिंग (मूल्यांकन क्रम: 2)
  3. fmt.Print("some") निष्पादित किया जाता है (मूल्यांकन क्रम: 3)
  4. मजे के परिणाम के साथ funWithGo फ़ंक्शन को कॉल स्थगित करें (मूल्यांकन क्रम: 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 

इस संशोधित कोड में, हम यह सुनिश्चित करने के लिए defer कीवर्ड का सही ढंग से लाभ उठाते हैं कि प्रारंभिक समस्या को हल करते हुए, संबंधित कार्यों को निष्पादित करने के बाद उम्र और टिकट की कीमत मुद्रित की जाती है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3