गो में नीचे क्या अंतर है?
मैंने खोजने की कोशिश की, लेकिन मैं उनका वर्णन करने के लिए एक सही शब्द नहीं सोच सका। उन्हें आधिकारिक तौर पर कैसे कहा जाता है?
# 1 - संरचना के अंदर माता-पिता:
type MyTime struct {
time.Time
}
#2 - जनक सही मेरे प्रकार के बाद संरचना परिभाषा के बिना:
type MyTime time.Time
#2 के लिए, मैं अपने प्रकार को किसी अन्य समय के साथ प्रारंभ कर सकता हूं। समय mt := MyTime(t)
जैसा है। # 1 प्रकार को किसी अन्य समय के साथ कैसे प्रारंभ करें। समय चर?
1 उत्तर
गो एक वस्तु उन्मुख भाषा नहीं है, कोई प्रकार का पदानुक्रम और वंशानुक्रम नहीं है। विवरण के लिए, देखें संरचनाओं का एक जटिल पदानुक्रम बनाने के लिए गो में मुहावरेदार तरीका क्या है? और पैरेंट मेथड के बजाय एम्बेडेड स्ट्रक्चर कॉल चाइल्ड मेथड पर जाएं।
आपका पहला उदाहरण एक नया प्रकार MyTime
एम्बेडिंग time.Time
बनाता है। एक प्रकार को एम्बेड करने से, एम्बेडेड प्रकार के सभी फ़ील्ड और तरीके प्रचारित हो जाते हैं और उपलब्ध होते हैं जैसे कि वे फ़ील्ड या एम्बेडर प्रकार के तरीके थे, उदाहरण के लिए जब आप एक इंटरफ़ेस को लागू करना चाहते हैं तो बहुत आसान है (क्योंकि प्रचारित विधियां उन्हें घोषित किए बिना "मौजूद" होंगी)।
आप इसे इस तरह इंस्टेंट कर सकते हैं (विवरण के लिए, देखें गोलंग एंबेडेड स्ट्रक्चर टाइप):
t := MyTime{Time: time.Now()}
आपका दूसरा उदाहरण एक नया प्रकार बनाता है, इससे सभी विधियां हटा दी जाएंगी। यह तब काम आता है जब आप नहीं चाहते कि मौजूदा तरीके नए प्रकार का हिस्सा बनें। इसका एक चमकदार उदाहरण String()
विधि को परिभाषित करना या मार्शलिंग व्यवहार को ओवरराइड करना है जब आप अपने कार्यान्वयन में मूल व्यवहार को कॉल करना चाहते हैं, विवरण के लिए देखें कॉल json.Unmarshal इनसाइड UnmarshalJSON फंक्शन बिना स्टैक ओवरफ्लो पैदा किए। आप एक साधारण प्रकार के रूपांतरण का उपयोग करके इसका मूल्य बना सकते हैं:
t := MyTime(time.Now())
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
go
गो एक ओपन-सोर्स प्रोग्रामिंग भाषा है। यह स्वत: मेमोरी प्रबंधन, प्रकार सुरक्षा, कुछ गतिशील टाइपिंग क्षमताओं, अतिरिक्त अंतर्निहित प्रकार जैसे चर-लंबाई सरणियों (स्लाइस कहा जाता है) और कुंजी-मान मानचित्रों को जोड़ने के लिए, सी से व्युत्पन्न एक वाक्यविन्यास के साथ सांख्यिकीय रूप से टाइप किया जाता है, और बड़े मानक पुस्तकालय।