golang为类型为map [string] interface {}的对象设置新值

I got json str which i parse like this.

var bdoc interface{}
bson.UnmarshalJSON([]byte(gjson.Get(*str, "user").String()), &bdoc)

my bdoc is of type map[string]interface{}. When i want to get key from my map i do it like this:

bdoc.(map[string]interface{})["pk"]

But how can i set a new value for that "pk" key ? I want to convert that bdoc["pk"] = "1234567". The new value will not be of type interface but of type string.

You can set string and value stay as string type

package main

import (
    "fmt"
    "log"
)

func main() {

    var bdoc interface{}
    aMap, ok := bdoc.(map[string]interface{})
    if !ok {
       log.Fatalf("Failed to cast %T", bdoc)
    }
    //depending on JSON settting pk number may have json.Numbe or float64
    fmt.Prinf("%v  %T
", aMap["pk"], aMap["pk"])
   aMap["pk"] ="1234"
    fmt.Prinf("%v  %T
", aMap["pk"], aMap["pk"])

}