دمج حقول من الهياكل المتطابقة مع تشفير JSON
في عالم البرمجة GO ، وتشتاق مهمة دمج حقول من هيكلين من نفس النوع. فكر في سيناريو حيث يكون لديك تكوين افتراضي ، مثل:
type Config struct { path string id string key string addr string size uint64 } var DefaultConfig = Config{"", "", "", "", 0}
وتكوين تم تحميله من ملف ، مثل:
القيم من كلا الهيكلين ، مع FileConfig فوق أي قيم في DefaultConfig. ومع ذلك ، قد لا تحتوي fileConfig على جميع الحقول. ب: = عكس. o: = refles.valueof (file) .elem () لأني: = 0 ؛ أنااستيراد ( "الترميز/JSON" "سلاسل" ) const fileContent = `{" id ":" file_id "،" addr ":" file_addr "،" size ": 100}` func unmarshalconfig (conf *config ، content string) خطأ { return json.newdecoder (strings.newreader (content)). decode (conf) } func mergeconfigs (defconfig *config ، fileconfig *config) خطأ { إذا err: = unmarshalConfig (defconfig ، fileContent) ؛ err! = nil { إرجاع خطأ } لـ _ ، v: = range fileconfig { defconfig [v.key] = v.value } العودة لا شيء }
في هذا الحل ، لا يتم تشكيل fileConfig في التكوين الافتراضي. تتولى حزمة الترميز/JSON جميع تعقيدات ضبط قيم الحقل ، بما في ذلك القيم المفقودة (والتي ستؤدي إلى افتراضي لقيمتها صفر) والقيم المحددة للملفات التي تتجاوز القيم الافتراضية.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3