是否可以将 map[string]string 转换为 map[string]interface{} 而无需在 golang 中使用 for 循环?

Ruc*_*tel -1 go go-interface

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

package main

import "fmt"

func main() {
    var m = make(map[string]string)
    
    m["a"] = "b"
    
    m1 := map[string]interface{}(m)
    fmt.Println(m1)
}

Run Code Online (Sandbox Code Playgroud)

我收到这样的错误:

# example
./prog.go:10:30: cannot convert m (type map[string]string) to type map[string]interface {}
Run Code Online (Sandbox Code Playgroud)

我可以使用以下代码使用 long 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) 
}

Run Code Online (Sandbox Code Playgroud)

adv*_*nsa 6

没有像 cast in go 这样的东西。只有类型转换。所以最好的方法是使用循环,然后将字符串转换为接口。