Mesclar campos de estruturas idênticas com JSON Encoding
No reino da programação Go, a tarefa de mesclar campos de duas estruturas do mesmo tipo surge frequentemente. Considere um cenário em que você tem uma configuração padrão, como:
type Config struct { path string id string key string addr string size uint64 } var DefaultConfig = Config{"", "", "", "", 0}
e uma configuração carregada de um arquivo, como:
var FileConfig = Config{"", "file_id", "", "file_addr", 0}
No entanto, neste caso, a reflexão não é uma solução ideal. Uma abordagem mais elegante é alavancar o poder do pacote de codificação/json. Utilizando essa técnica, você pode mesclar elegante suas configurações:
import ( "Encoding/JSON" "Strings" ) const fileContent = `{" id ":" file_id "," addr ":" file_addr "," size ": 100}` Func UNMARSHALCONFIG (Conf *Config, Content String) Erro { Return json.NewDecoder (Strings.NewReader (Content)). Decode (conf) } func Mergeconfigs (Defconfig *config, FileConfig *config) Erro { se err: = unarshalconfig (DEFCONFIG, FileContent); err! = nil { retornar err } para _, v: = range fileconfig { DEFCONFIG [V.KEY] = V.Value } retornar nil }
Nesta solução, o FileConfig é não marcado na configuração padrão. O pacote de codificação/JSON lida com todas as complexidades da definição de valores de campo, incluindo valores ausentes (que padrão no seu valor zero) e valores especificados por arquivo que substituem os valores padrão.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3