gpt4 book ai didi

json - 检查 map 是否在 Golang 中初始化

转载 作者:IT王子 更新时间:2023-10-29 00:35:40 27 4
gpt4 key购买 nike

我正在将一些 JSON 解码为一个结构,我想处理未提供特定字段的情况。

结构:

type Config struct {
SolrHost string
SolrPort int
SolrCore string
Servers map[string][]int
}

要解码的 JSON:

{
"solrHost": "localhost",
"solrPort": 8380,
"solrCore": "testcore",
}

在解码 JSON 的方法中,我想检查 map[string][]int 是否已初始化,如果没有,则进行初始化。

当前代码:

func decodeJson(input string, output *Config) error {
if len(input) == 0 {
return fmt.Errorf("empty string")
}
decoder := json.NewDecoder(strings.NewReader(input))
err := decoder.Decode(output)
if err != nil {
if err != io.EOF {
return err
}
}

// if output.Server.isNotInitialized...

return nil
}

我可以使用 recover() 吗?这是完成任务的“最佳”方式吗?

最佳答案

zero value任何 map 的 nil,所以只需检查它:

if output.Servers == nil { /* ... */ }

或者,您也可以检查它的长度。这也处理空 map 的情况:

if len(output.Servers) == 0 { /* ... */ }

关于json - 检查 map 是否在 Golang 中初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31339249/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com