كيفية إجراء تسلسل لواجهة معقدة مع الحقول غير المصدرة؟

StackOverflow https://stackoverflow.com/questions/5992864

  •  13-11-2019
  •  | 
  •  

سؤال

أحتاج إلى إجراء تسلسل لبعض الواجهات المعقدة (template.Template).لديها العديد من الحقول غير المصدرة، ولا يريد جوب العمل معهم.أي اقتراحات؟

ملاحظة.في الواقع، أحاول وضع قالب تم تحليله في ذاكرة التخزين المؤقت على محرك التطبيقات.

هل كانت مفيدة؟

المحلول

الإجابة المختصرة هي أنه عادةً ما يكون هناك سبب لعدم تصدير الحقول--template.Template, ، على سبيل المثال، يحتوي على معلومات تتغير أثناء التحليل - لذلك أنصح بعدم إجراء تسلسل لها بنفسك reflect.ومع ذلك، GobEncoder و GobDecoder تمت إضافة الواجهات مؤخرًا إلى gob;إذا كنت بحاجة إلى إجراء تسلسل لبنية معقدة مع حقول غير مُصدَّرة، فشجع مؤلف الحزمة على تنفيذ هذه الواجهات.والأفضل من ذلك، أن تنفذها بنفسك (لا ينبغي أن يكون ذلك صعبًا template.Template) و يساهم التصحيح الخاص بك.

نصائح أخرى

إذا كان النوع من حزمة أخرى (مثل القالب)، فلا يمكن القيام بذلك باستخدام أي من مكتبات التسلسل الحالية لـ Go (gob, json, ، بسون، الخ).ولا يجب يجب أن يتم ذلك، لأن الحقول غير مُصدَّرة.

ومع ذلك، إذا كنت بحاجة حقًا إلى ذلك، فيمكنك كتابة برنامج التسلسل الخاص بك باستخدام package reflect, ، خاصة Value.Field() والأصدقاء للحصول على الحقول غير المصدرة.ثم تحتاج فقط إلى تخزينها بطريقة يمكنك فك تشفيرها لاحقًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top