यह टूल क्या करता है
Go फ़ॉर्मैटर Go सोर्स कोड को उस एक मानक स्टाइल में दोबारा लिखता है जिसे पूरी Go कम्युनिटी इस्तेमाल करती है। कोई फ़ाइल या स्निपेट पेस्ट करें और वह gofmt के इंडेंटेशन, स्पेसिंग, import ग्रुपिंग और अलाइन किए गए struct फ़ील्ड व कमेंट के साथ वापस आता है।
यह Go toolchain का असली gofmt चलाता है, जिसे WebAssembly में कंपाइल किया गया है। कुछ भी अनुमान से नहीं होता: यहाँ जो दिखता है वह ठीक वही है जो go fmt लिखेगा, इसलिए फ़ॉर्मैट किया गया कोड CI में बिना कोई diff बनाए कमिट किया जा सकता है।
इसे कैसे इस्तेमाल करें
- Go कोड पेस्ट करें, या कोई
.goफ़ाइल खोलें। - टाइप करते ही फ़ॉर्मैट किया गया कोड दाईं ओर दिखने लगता है।
- जो कोड आप कमिट करेंगे उसके लिए Tab इंडेंटेशन रखें। जब कोड किसी डॉक्यूमेंट, स्लाइड या ऐसी साइट में जा रहा हो जो टैब बहुत चौड़े दिखाती है, तब 2 स्पेस या 4 स्पेस चुनें।
- परिणाम कॉपी या डाउनलोड करें।
अगर कोड पार्स नहीं होता, तो टूल पहला एरर उसकी लाइन और कॉलम के साथ दिखाता है, जैसे expected ')', found '{', और आप सीधे उस लाइन पर जा सकते हैं।
उदाहरण
उदाहरण एक छोटा प्रोग्राम है जिसे जितनी हो सके उतनी कम लाइनों में ठूँसा गया है: सेमीकोलन से अलग किए गए imports, दो लाइनों पर एक struct, और ऑपरेटर्स के आसपास बिना स्पेस वाले फ़ंक्शन। फ़ॉर्मैट करने के बाद:
- imports कोष्ठक वाला एक ब्लॉक बन जाते हैं, हर लाइन में एक पैकेज;
- struct फ़ील्ड अपनी-अपनी लाइनों पर आ जाते हैं और उनके टाइप एक कॉलम में अलाइन हो जाते हैं;
if u.Age<18{बन जाता हैif u.Age < 18 {, और उसकी बॉडी अपनी अलग लाइन पर;- composite literals में कॉमा और कोलन के बाद स्पेस आ जाते हैं।
gofmt क्या बदलता है और क्या नहीं
gofmt सिर्फ़ लेआउट बदलता है। यह कभी identifiers का नाम नहीं बदलता, डिक्लेरेशन का क्रम नहीं बदलता और न इस्तेमाल न होने वाले imports हटाता है; ये काम goimports और go vet जैसे टूल्स के हैं। यह आपके लाइन ब्रेक भी वहाँ बनाए रखता है जहाँ उनका मतलब है, इसलिए कई लाइनों में बाँटी गई लंबी argument लिस्ट बँटी ही रहती है।
कमेंट रखे जाते हैं और आसपास के कोड के साथ दोबारा इंडेंट होते हैं। लगातार लाइनों के अंत वाले कमेंट एक कॉलम में अलाइन होते हैं, ठीक struct फ़ील्ड की तरह।
सुझाव
- फ़ॉर्मैटिंग छूटा हुआ ब्रेस ढूँढने का तेज़ तरीका है: एरर की पोज़िशन आम तौर पर गलती के बाद वाली पहली लाइन की ओर इशारा करती है।
- किसी issue या review में कोड शेयर करने से पहले फ़ॉर्मैटर चलाएँ। तब रिव्यूअर इस पर ध्यान दे सकते हैं कि कोड क्या करता है, न कि वह कैसा दिखता है।
- अपने एडिटर में gopls के साथ “format on save” चालू करें ताकि आपकी फ़ाइलें हमेशा इसी आउटपुट से मेल खाएँ।
अक्सर पूछे जाने वाले सवाल
› क्या यह असली gofmt है?
हाँ। फ़ॉर्मैटर Go toolchain का gofmt कोड है जिसे WebAssembly में कंपाइल किया गया है, इसलिए आउटपुट बाइट-दर-बाइट वही है जो आपकी मशीन पर `gofmt` या `go fmt` प्रिंट करता है।
› क्या मुझे package clause चाहिए?
नहीं। पूरी फ़ाइल सबसे अच्छी है, लेकिन gofmt डिक्लेरेशन की लिस्ट या कुछ स्टेटमेंट भी स्वीकार करता है, जो ब्लॉग पोस्ट या चैट से कॉपी किए गए स्निपेट के लिए काम आता है।
› इंडेंटेशन के लिए टैब क्यों इस्तेमाल होते हैं?
gofmt हमेशा टैब से इंडेंट करता है और स्पेस से अलाइन करता है। यही Go की परंपरा है, और एडिटर टैब को आपकी पसंद की किसी भी चौड़ाई पर दिखाते हैं। अगर किसी डॉक्यूमेंट या स्लाइड के लिए स्पेस चाहिए, तो 2 या 4 स्पेस चुनें, सिर्फ़ शुरुआती टैब बदले जाते हैं।
› क्या मेरा कोड अपलोड होता है?
नहीं। WebAssembly मॉड्यूल एक बार डाउनलोड होता है और फ़ॉर्मैटिंग आपके ब्राउज़र में लोकल रूप से चलती है।