猿问

是否可以将 map[string]string 转换为 map[string]interface{}

当我尝试使用以下代码段将对象转换为golang时,我收到错误。map[string]stringmap[string]interface{}


package main


import "fmt"


func main() {

    var m = make(map[string]string)

    

    m["a"] = "b"

    

    m1 := map[string]interface{}(m)

    fmt.Println(m1)

}


我收到这样的错误:


# example

./prog.go:10:30: cannot convert m (type map[string]string) to type map[string]interface {}

我能够使用以下代码使用长for循环解决方案来转换它,但我想知道是否有任何更简单的方法。


package main


import (

    "fmt"

)


func main() {

    m := map[string]string{

        "a": "a",

        "b": "b",

    }


    m2 := make(map[string]interface{}, len(m))

    for k, v := range m {

        m2[k] = v

    }

    

    fmt.Println(m2) 

}


DIEA
浏览 165回答 2
2回答

慕的地8271018

没有像演员这样的东西。只有类型转换。因此,最好的方法是使用循环,然后将字符串转换为接口。

慕雪6442864

您可以通过 JSON 对其进行往返:package mainimport (   "bytes"   "encoding/json"   "fmt")func transcode(in, out interface{}) {   buf := new(bytes.Buffer)   json.NewEncoder(buf).Encode(in)   json.NewDecoder(buf).Decode(out)}func main() {   m := map[string]string{"a": "b"}   n := make(map[string]interface{})   transcode(m, &n)   fmt.Println(n) // map[a:b]}https://golang.org/pkg/encoding/json
随时随地看视频慕课网APP

相关分类

Go
我要回答