为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
DIEA 2022-08-24 18:51:51
当我尝试使用以下代码段将对象转换为golang时,我收到错误。map[string]stringmap[string]interface{}package mainimport "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 mainimport (    "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) }
查看完整描述

2 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

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


查看完整回答
反对 回复 2022-08-24
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

您可以通过 JSON 对其进行往返:


package main


import (

   "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


查看完整回答
反对 回复 2022-08-24
  • 2 回答
  • 0 关注
  • 164 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信