I have this folder structure:

Req.go में, मेरे पास है:

package basic

type Headers struct {
}

type Body struct {
}

और res.go में, मेरे पास वही है:

package basic

type Headers struct {
}

type Body struct {
}

और इसलिए मुझे यह त्रुटि मिलती है:

इस पैकेज में 'हेडर' को फिर से घोषित किया गया

इस पैकेज में पुनर्घोषित 'बॉडी'

क्या इसे हल करने का एकमात्र तरीका अपने स्वयं के फ़ोल्डरों में req और res डालना है? उह इतने सारे फ़ोल्डर।

go
1
Alexander Mills 17 नवम्बर 2018, 23:46

1 उत्तर

सबसे बढ़िया उत्तर

पैकेज अलग और पुन: प्रयोज्य कोड बनाने की मूल इकाई हैं। पैकेज के अंदर से, आप इसके पहचानकर्ताओं (पैकेज में घोषित पहचानकर्ता) को उनके नाम से संदर्भित करते हैं . "बाहर" (अन्य पैकेजों से) से, आप पैकेज आयात करते हैं और आप एक योग्य का उपयोग करके इसके पहचानकर्ताओं को संदर्भित करते हैं पहचानकर्ता, जो है

QualifiedIdent = PackageName "." identifier .

जब एक पैकेज में कई फाइलें होती हैं, तो पैकेज की किसी भी फाइल में घोषित प्रत्येक पहचानकर्ता पैकेज ब्लॉक से संबंधित होगा। Spec: Declarations and scope: से उद्धरण

शीर्ष स्तर (किसी भी फ़ंक्शन के बाहर) पर घोषित स्थिर, प्रकार, चर, या फ़ंक्शन (लेकिन विधि नहीं) को दर्शाने वाले पहचानकर्ता का दायरा पैकेज ब्लॉक है।

इसका मतलब यह है कि आपके पास एक ही पैकेज की 2 फाइलों में एक ही पहचानकर्ता घोषित नहीं हो सकता है।

यदि आप इसके बारे में सोचते हैं, तो ऐसा ही होना चाहिए। अगर बाहर से कोई व्यक्ति basic.Header लिखता है तो क्या होगा? इसका मतलब कौन सा Header होना चाहिए?

एक विकल्प उन्हें 2 अलग-अलग पैकेजों में रखना है: req और resp, फिर आप उन्हें req.Header और resp.Header के रूप में संदर्भित कर सकते हैं, और आप ठीक से जानते हैं कि उनका क्या मतलब है इन योग्य पहचानकर्ताओं को देखकर।

यदि आप 2 पैकेज नहीं चाहते हैं, तो बस उनका नाम बदलें। उन्हें सार्थक नाम दें, जैसे ReqHeader और RespHeader, और फिर आप उन्हें basic.ReqHeader और basic.RespHeader की तरह संदर्भित कर सकते हैं।

2
icza 17 नवम्बर 2018, 21:15