слияние полей идентичных структур с кодированием json
в сфере программирования GO, задача слияния полей из двух структур одного типа часто возникает. Рассмотрим сценарий, в котором у вас есть конфигурация по умолчанию, например:
type Config struct { path string id string key string addr string size uint64 } var DefaultConfig = Config{"", "", "", "", 0}
и конфигурация, загруженная из файла, например:
var FileConfig = Config{"", "file_id", "", "file_addr", 0}
, однако, в этом случае отражение не является оптимальным решением. Более элегантным подходом является использование мощности пакета кодирования/JSON.
пакет кодирования/JSON обеспечивает простой механизм для данных Unmarshal JSON в предварительно определенную структуру GO. Используя эту технику, вы можете элегантно объединить свои конфигурации:
]импорт ( "Кодирование/json" "Строки" ) const filecontent = `{" id ":" file_id "," addr ":" file_addr "," size ": 100}` func unmarshalconfig (conf *config, string content) ошибка { return json.newdecoder (strings.newreader (content)). Decode (conf) } func mergeconfigs (defconfig *config, fileconfig *config) ошибка { if err: = unmarshalconfig (defconfig, filecontent); err! = nil { вернуть ошибку } для _, v: = range fileconfig { defconfig [v.key] = v.value } вернуть ноль }. Пакет кодирования/JSON обрабатывает все сложности значений поля настройки, включая отсутствующие значения (которые по умолчанию будут по их нулевому значению) и определенными файлами значениями, которые переопределяют значения по умолчанию.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3