कृपया यह रेपो देखें। मैं डेटास्टोर में एक इंटरफ़ेस बनाने की कोशिश कर रहा हूं। कारण: मैं विकास करते समय वास्तविक पोस्टग्रेस डीबी पर निर्भर नहीं होना चाहता, लेकिन मैं देव के दौरान इन-मेमोरी-कार्यान्वयन का उपयोग करना चाहता हूं।

यह काम करता है, जब तक मैं अपने मुख्य() में उदाहरण बना देता हूं। उदाहरण के लिए: db := store.NewMemoryDB() या db := store.NewDB()

लेकिन अब मैं एक बुलियन के आधार पर एक उदाहरण बनाना चाहता हूं। इसलिए मैंने GetDatastore(bool) में एक फंक्शन बनाया। स्टोर पैकेज। यह पोस्टग्रेज कार्यान्वयन के लिए काम करता है, लेकिन इन-मेमोरी के लिए नहीं। मुझे निम्न त्रुटि मिलती है: cannot use NewMemoryDB() (type *MockDB) as type *DB in assignment। अब मैं वास्तव में नहीं जानता कि इसे कैसे हल किया जाए। क्या कोई कृपया मुझे संकेत दे सकता है? मैं इन-मेमोरी को *DB-संगत कैसे बना सकता हूँ?

0
Rogier Lommers 3 अक्टूबर 2018, 21:12

1 उत्तर

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

GetDatastore का रिटर्न प्रकार ठोस प्रकार *DB है, और *MockDB *DB नहीं है, इसलिए आपको वह त्रुटि मिलती है। इसके बजाय आप इंटरफ़ेस प्रकार Datastore को वापस करना चाहते हैं, जिसे *DB और *MockDB दोनों लागू करते हैं।

1
Alex Guerra 3 अक्टूबर 2018, 18:36