【问题标题】:http: panic serving [::1]:57685: assignment to entry in nil maphttp: 恐慌服务 [::1]:57685: 分配到 nil 地图中的条目
【发布时间】:2018-01-21 20:09:21
【问题描述】:

我正在尝试使用 golang 制作电子名片。我的代码是:

    var (
    // card is a map of strings to []*vcard.Field objects
    card vcard.Card

    // destination where the vcard will be encoded to
    enc = vcard.NewEncoder(destFile) 
)
var str []string


for i, entry := range k {


    if i!=2{
        str=append(str,k[i])


        card.SetValue(vcard.FieldFormattedName, strings.Join(str[:i],""))//panic occurs here
        fmt.Println(str)

    }else if i==2{
        card.SetValue(vcard.FieldTelephone, entry)
    }else{
        card.SetValue(vcard.FieldOrganization, entry)
    }




    // set the value of a field and other parameters by using card.Set
    card.Set(vcard.FieldName, &vcard.Field{
        Value: strings.Join(str[:2], ";"),
        Params: map[string][]string{
            vcard.ParamSortAs: []string{
                k[0] + " " + k[1],
            },
        },
    })

需要存储在vcf中的json文件是:

      {"firstname":"Vilas","lastname":"Prakash","mobile":"8732647482","organisation":"Dbjb"}

我已将 json 编组为 []string。执行时出现以下错误:

    http: panic serving [::1]:57685: assignment to entry in nil map

谁能帮帮我???或者有没有其他方法可以使用 json 文档作为输入在 golang 中创建 .vcf 或 vcard ???

【问题讨论】:

  • 在代码中添加注释,指出发生恐慌的行。
  • 评论了发生恐慌的那一行
  • "card vcard.Card" 卡片是一张地图。并且 card.SetValue 正在分配值
  • var card vcard.Card 您已将其创建为全局,但尚未对其进行初始化。 var card = make(vcard.Card)

标签: json api go vcf-vcard


【解决方案1】:

您尚未初始化地图。我建议您阅读地图在 Go 中的工作原理https://blog.golang.org/go-maps-in-action

在此期间

var card vcard.Card

应该是

var card = make(vcard.Card)

我不熟悉 vcard 数据结构。但是你提到它应该是一个地图-> string][]*vcard.Field.. 如果上面的 make 失败将其更改为

var card = make(map[string][]*vcard.Field)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    • 2021-07-11
    • 2016-11-18
    • 1970-01-01
    • 2018-06-04
    相关资源
    最近更新 更多