//go:build और // build के बीच अंतर
गो 1.17 में, //go:build नामक एक नया सशर्त संकलन निर्देश इसके प्रतिस्थापन के रूप में पेश किया गया था पुराना // निर्माण निर्देश। जबकि दोनों निर्देश बिल्ड बाधाओं को निर्दिष्ट करने के एक ही उद्देश्य को पूरा करते हैं, //go:build का उपयोग करने में कई महत्वपूर्ण अंतर और फायदे हैं।
सिंटैक्स अंतर:
- //go:build अन्य गो निर्देशों के समान सिंटैक्स का पालन करता है, जैसे //go:generate। यह एक बूलियन अभिव्यक्ति को एक तर्क के रूप में लेता है, जो यह निर्धारित करता है कि संकलन के दौरान फ़ाइल को पैकेज में शामिल किया जाना चाहिए या नहीं।
- // दूसरी ओर, बिल्ड कम सहज वाक्यविन्यास का उपयोग करता है। यह निर्दिष्ट करने के लिए टैग की अल्पविराम से अलग की गई सूची स्वीकार करता है कि फ़ाइल को किन प्लेटफ़ॉर्म या शर्तों के लिए शामिल किया जाना चाहिए।
कार्यान्वयन विवरण:
- गो संस्करण 1.17 और बाद में, //go:build पसंदीदा निर्देश है और इसे टूलचेन द्वारा सक्रिय रूप से हटा दिया जाएगा, जैसा कि Go 1.18 रिलीज़ में बताया गया है नोट्स।
- // सुचारू संक्रमण सुनिश्चित करने के लिए कुछ गो रिलीज के लिए बिल्ड का समर्थन जारी रहेगा, लेकिन नए संस्करणों में इसके उपयोग को हतोत्साहित किया जाता है।
//go के लाभ :build:
- स्थिरता: //go:बिल्ड गो के अन्य निर्देशों और व्यावहारिकताओं के साथ संरेखित होता है, जिससे निर्माण होता है यह सुसंगत और याद रखने में आसान है। क्रमशः AND और OR शर्तों के लिए। यह // बिल्ड के विपरीत है, जिसमें AND के लिए अल्पविराम और OR के लिए रिक्त स्थान का उपयोग किया जाता है।
- Go fmt Support: //go:build, go fmt द्वारा समर्थित है, जो स्वचालित रूप से गलत को ठीक करता है स्रोत फ़ाइलों में निर्देश की नियुक्ति। यह सामान्य गलतियों से बचने में मदद करता है, जैसे निर्देश और पैकेज स्टेटमेंट के बीच एक खाली रेखा नहीं छोड़ना।
- विस्तृत त्रुटि संदेश: //go:build संकलन के दौरान अधिक विस्तृत त्रुटि संदेश प्रदान करता है, निर्माण बाधाओं के साथ किसी भी समस्या की पहचान करने में मदद करना।
- उपयोग:
हालांकि दोनों निर्देशों का उपयोग निर्माण को निर्दिष्ट करने के लिए किया जाता है बाधाएं, //go:build आम तौर पर इसके फायदों के कारण पसंद की जाती है। यहां दोनों निर्देशों के उपयोग को प्रदर्शित करने वाला एक उदाहरण दिया गया है:
//go:build linux && amd64
पैकेज मुख्य
//लिनक्स बनाएं,amd64
पैकेज मुख्य
इस उदाहरण में, दोनों निर्देश एक ही परिणाम प्राप्त करेंगे, जो कि मुख्य पैकेज को केवल लिनक्स और 64-बिट एएमडी आर्किटेक्चर के लिए संकलित करते समय शामिल करना है।
//go:build linux && amd64
package main
// build linux,amd64
package main
//go:बिल्ड //बिल्ड की तुलना में कई फायदे प्रदान करता है, जिसमें एक सुसंगत सिंटैक्स, बेहतर त्रुटि संदेश और गो एफएमटी समर्थन शामिल है। यह गो 1.17 और बाद में बिल्ड बाधाओं को निर्दिष्ट करने के लिए पसंदीदा निर्देश है।