इंपोर्ट स्टेटमेंट के सामने अंडरस्कोर का क्या मतलब है?


जवाबों:


218

संक्षिप्त जवाब:

यह पूरी तरह से इसके दुष्प्रभावों के लिए एक पैकेज आयात करने के लिए है।

से जाओ विशिष्टता :

केवल इसके साइड-इफेक्ट्स (इनिशियलाइज़ेशन) के लिए एक पैकेज आयात करने के लिए, खाली पैकेज नाम के रूप में रिक्त पहचानकर्ता का उपयोग करें:

आयात _ "lib / गणित"

Sqlite3 में

Go-sqlite3 के मामले में , अंडरस्कोर आयात का उपयोग किसी अन्य फ़ंक्शन को आयात किए बिना, फ़ंक्शन sqlite3में डेटाबेस ड्राइवर के रूप में ड्राइवर को पंजीकृत करने के साइड-इफेक्ट के लिए किया जाता है init():

sql.Register("sqlite3", &SQLiteDriver{})

एक बार इस तरह से पंजीकृत हो जाने के बाद, sqlite3 sqlको उदाहरण में आपके कोड में मानक पुस्तकालय के इंटरफ़ेस के साथ उपयोग किया जा सकता है :

db, err := sql.Open("sqlite3", "./foo.db")

34

जबकि अन्य उत्तर इसे पूरी तरह से वर्णित करते हैं, "मुझे कोड दिखाएं" लोगों के लिए, इसका मूल रूप से मतलब है: पैकेज-स्तरीय चर बनाना और initउस पैकेज के कार्य को निष्पादित करना ।

और (यदि कोई हो) संकुल-स्तरीय चर और initकार्यों के संकुल का पदानुक्रम , जो इस पैकेज ने आयात किया है।

केवल एक साइड इफेक्ट जो एक पैकेज बना सकता है, वास्तव में कॉल किए बिना, पैकेज-स्तरीय चर (सार्वजनिक या निजी) बनाकर और इसके अंदर initकार्य करता है।

नोट : फंक्शन से पहले भी initफंक्शन चलाने की ट्रिक है । हम इसके लिए पैकेज स्तर चर का उपयोग उस फ़ंक्शन का उपयोग करके उन्हें प्रारंभ करके कर सकते हैं।

func theVeryFirstFunction() int {
    log.Println("theVeryFirstFunction")
    return 6
}

var (
    Num = theVeryFirstFunction()
)

func init() { log.Println("init", Num) }

17

https://golang.org/doc/effective_go.html#blank

यह या तो कार्य प्रगति पर है, या दुष्प्रभावों के लिए आयात किया गया है। इस मामले में, मेरा मानना ​​है कि यह दुष्प्रभावों के लिए है, जैसा कि डॉक्टर में वर्णित है।


उस पेज पर इम्पोर्ट फॉर साइड इफेक्ट एंकर का लिंक दिया गया है । यह समझाता है, "कभी-कभी बिना किसी स्पष्ट उपयोग के, केवल इसके साइड इफेक्ट्स के लिए पैकेज आयात करना उपयोगी होता है", और "पैकेज को केवल इसके साइड इफेक्ट्स के लिए आयात करने के लिए, पैकेज को रिक्त पहचानकर्ता के लिए फिर से नाम दें"।
ल्यूक शेपर्ड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.