मुझे गो के gofmt उपकरण के बारे में एक प्रश्न है, जो स्वचालित रूप से आधिकारिक गो चश्मे के अनुसार प्रोग्रामों का आउटपुट स्वरूपित करता है (उदाहरण के लिए आप इस बारे में बहस नहीं कर सकते कि ब्रैकेट को गो में जाना चाहिए, क्योंकि यह स्पष्ट रूप से चश्मा द्वारा तय किया गया है) ।गो के गोफेट और diff/VCS मुद्दे?
अगले पेज पर:
http://golang.org/doc/effective_go.html
"स्वरूपण" पैरा के तहत, यह लिखा है कि:
एक उदाहरण के रूप में, वहाँ पर टिप्पणी अस्तर समय बिताने की आवश्यकता नहीं है एक संरचना के क्षेत्र। गोफमेट आपके लिए ऐसा करेगा।
type T struct {
name string // name of the object
value int // its value
}
हालांकि मुझे समझ नहीं आता कि यह कैसे संभवतः diff और VCSes साथ अच्छा खेल सकते हैं: घोषणा
type T struct {
name string // name of the object
value int // its value
}
gofmt कॉलम लाइन अप होगा देखते हुए।
उदाहरण के लिए, अगर मैं एक नई लाइन था:
confuzzabler int // doo doo be doo
और एक diff चलाने के लिए, मैं इस मिलना चाहिए:
2d1 < confuzzabler int // doo doo be doo 7d5 <
और जीवन सब अच्छा होगा: भिन्नता से पता चलता है एकमात्र पंक्ति जो बदल गई।
लेकिन अगर मैं gofmt मैं यह मिल गया फिर से चलाएँ:
type T struct { confuzzabler int // doo doo be doo name string // name of the object value int // its value }
और अब मैं फिर से चलाने के अंतर और मैं इस:
2,4c2,3 < confuzzabler int // doo doo be doo < name string // name of the object < value int // its value --- > name string // name of the object > value int // its value 7d5 <
जो एक अत्यधिक भ्रामक है और भ्रामक diff आउटपुट क्योंकि केवल एक पंक्ति बदल गई।
आप इसे एक डेवलपर के रूप में कैसे सौदा करते हैं?
इस से पहले के रूप में "से Offtopic" अतः पूछे जाने वाले प्रश्न यहां कृपया पढ़ें मतदान हो: http://stackoverflow.com/faq जो स्पष्ट रूप से कहा गया है कि इतनी "सही जगह" [वैसा] प्रोग्रामिंग के बारे में सवाल पूछने के लिए है टूल्स (मुझे यह कहना है क्योंकि मुझे हाल ही में एक उपकरण के बारे में एक प्रश्न मिला है और किसी ने इसे बंद करने के लिए वोट दिया है ... बेशक मेरे प्रश्न पोस्ट करने के लिए कहीं और सुझाव देना)। – SyntaxT3rr0r
मुझे एहसास है कि यह ज्यादातर * diff * टूल्स की कमियों को हाइलाइट करता है जो समझने के लिए बहुत बेवकूफ हैं कि अवधारणात्मक रूप से दोनों स्रोत कोड वास्तव में एक ही गो प्रोग्राम हैं, लेकिन मुझे अभी भी यह जानने में दिलचस्पी है कि मुझे इस * gofmt * समस्या से कैसे निपटना चाहिए। – SyntaxT3rr0r
@ जोनाथन लेफ्लर: यदि आप मेरा प्रश्न सावधानी से पढ़ते हैं तो आप देखेंगे कि यह ** ठीक ** ** जिस मुद्दे का मैं वर्णन कर रहा हूं। * Gofmt * की प्रकृति के कारण स्रोत कोड में मामूली परिवर्तन करना, * gofmt * कोड की कई पंक्तियों को बदल सकता है भले ही आपने अभी एक पंक्ति बदल दी हो (क्योंकि यह ** सभी ** आपकी लाइनों को फिर से संरेखित कर रहा है, नहीं सिर्फ एक जो आपने जोड़ा)। यह ऐसा कुछ है जो आम तौर पर डेवलपर्स पागल ड्राइव करता है क्योंकि यह "कुछ भी नहीं" के लिए भिन्न बनाता है। बस देखें कि एसओ पर कितने लोग शिकायत करते हैं कि * gofmt * करता है क्योंकि यह भिन्नता को गड़बड़ कर देता है "। – SyntaxT3rr0r