गो में इंडेंटेशन: टैब या स्पेस?


125

क्या कहीं मानक Google Go कोडिंग कन्वेंशन डॉक्यूमेंट है जो सेट करता है कि क्या टैब या स्पेस गो स्रोत कोड में इंडेंटेशन के लिए पसंद किए जाते हैं? यदि नहीं, तो (सांख्यिकीय) अधिक लोकप्रिय विकल्प क्या है?

  1. आधिकारिक सिफारिश क्या है? (यदि कोई)
  2. अधिक लोकप्रिय विकल्प क्या है?

जवाबों:


195

आधिकारिक अनुशंसा आपके कोड को प्रारूपित कर रही है

go fmt

या सीधे gofmt कमांड का उपयोग करना

gofmt -w .

आप इसके बारे में अधिक यहाँ golang.org ब्लॉग पर, या प्रभावी गो दस्तावेज़ से पढ़ सकते हैं :

इंडेंटेशन
हम इंडेंटेशन के लिए टैब्स का उपयोग करते हैं और गोफमट उन्हें डिफ़ॉल्ट रूप से उत्सर्जन करता है। रिक्त स्थान का उपयोग केवल तभी करें जब आप अवश्य करें।


59
ठीक है, इसलिए यह टैब है।
एरिक कप्लून

1
हां, इंडेंटेशन के लिए टैब आधिकारिक सिफारिश है। आप अंतरिक्ष इंडेंटेशन का उपयोग @Intermernet बिंदुओं के रूप में कर सकते हैं, लेकिन यह अनुशंसा नहीं है।
एनिसस

19
@ ErikAllik, वास्तव में, आधिकारिक स्थिति "टैब का उपयोग करें" नहीं है, बल्कि " go fmtइसे सबमिट करने से पहले अपने कोड पर उपयोग करें" (ध्यान दें कि यह भी है gofmt)। मैं जो कोशिश कर रहा हूं, वह यह है कि गो को यह अधिकार सिर्फ नीति घोषित करने से नहीं, बल्कि उस उपकरण को अपनाने से है जो इसे लागू करता है। यह असामान्य है, इसलिए इस विचार के आसपास अपने सिर को मोड़ने और अपनाने की कोशिश करें go fmt। ध्यान दें कि यहां तक ​​कि स्वचालित समाधान भी हैं (उदाहरण के लिए, विम के लिए आधिकारिक गो प्लगइन :Fmtकमांड, IIRC का समर्थन करता है )।
kostix


2
मुझे लगता है कि यह ध्यान देने योग्य है कि किसी उपकरण को अपनाना / उसकी आवश्यकता को रोकना सभी तर्कों को नहीं रोकता है, लेकिन इसका मतलब यह है कि लोग आपकी राय के लिए आप पर पागल हो रहे हैं, लोग आपको उपकरण स्वीकार करने के लिए पागल हो जाते हैं (और उपकरण निर्माताओं के लिए) उनकी राय के विकल्प)।
mtraceur

22

संपादित 2: वह नीचे मूल जवाब अब गलत है। लिंक की गई स्रोत फ़ाइल का सही खंड (वर्तमान 30/12/2019) है:

Gofmt प्रारूप जाओ कार्यक्रम। यह संरेखण के लिए इंडेंटेशन और ब्लॉक्स के लिए टैब का उपयोग करता है। संरेखण मानता है कि एक संपादक एक निश्चित-चौड़ाई वाले फ़ॉन्ट का उपयोग कर रहा है।

इस बात की ओर इशारा करने के लिए तहज़ीब का धन्यवाद !

सभी जानकारी यह है कि लाइन अब बढ़ रही है

संपादित करें: तल पर मूल उत्तर अब गलत है। लिंक की गई स्रोत फ़ाइल का सही खंड (वर्तमान 25/07/2014) है:

Gofmt प्रारूप जाओ कार्यक्रम।
यह संरेखण के लिए इंडेंटेशन और ब्लॉक्स के लिए टैब (चौड़ाई = 8) का उपयोग करता है।

मूल उत्तर (पदावनत):

Formatting control flags:
    -comments=true
        Print comments; if false, all comments are elided from the output.
    -tabs=true
        Indent with tabs; if false, spaces are used instead.
    -tabwidth=8
        Tab width in spaces.

4
-tabsऔर -tabwidthकर रहे हैं चला गया (और -comments, और अधिक बारीकी से देखा नहीं किया है अब कम से कम प्रलेखित है)
विलियम

2
@billisphere धन्यवाद, मैंने लिंक फ़ाइल के संबंधित अनुभाग के साथ उत्तर को अपडेट कर दिया है।
इंटरमरनेट

5
जब आप टैब वर्णों का उपयोग करते हैं तो किसी विशेष टैब की चौड़ाई का उपयोग करने जैसी कोई चीज नहीं होती है, इसलिए (पूर्व) टैब के विकल्प का कोई प्रभाव नहीं होता है और अद्यतन पाठ के "चौड़ाई = 8" भाग को हटा दिया जाना चाहिए। टैब की चौड़ाई दर्शक में कॉन्फ़िगर की गई है। यह त्रुटि भी जुड़े स्रोत में मौजूद है।
थोमसट्रेटर

2
यह पुराना है। gofmtकमांड के दस्तावेज़ीकरण में किसी तालिका के बारे में अधिक उल्लेख नहीं है । इसे यहाँ हटा दिया गया है: github.com/golang/go/commit/…
TehSphinX
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.