go - 如何在 GO 中将 interface{} 转换为 map

标签 go go-interface

我是 Go 新手,我正在尝试学习如何将 interface{} 转换为 Map。这是我正在尝试实现的示例。

游乐场链接:https://play.golang.org/p/3jhKlGKO46Z

谢谢您的帮助。

package main

import (
    "fmt"
)


func main() {

    Map := make(map[string]interface{})
    test(Map)

    for k,v := range Map {
        fmt.Println("key : %v Value : %v", k, v)
    }

}

func test(v interface{}) error{

    data := make(map[int]interface{})

    for i := 0; i < 10; i++ {
        data[i] = i * 5
    }

    for key,val := range data {
        //  fmt.Println("key : %v Value : %v", key, val)
        v[key] = val
    }

    return nil

最佳答案

Go 支持接口(interface)的类型断言。它提供了界面中存在的具体值。

您可以使用以下代码实现此目的。

    m, ok := v.(map[int]interface{})
    if ok {
      // use m
      _ = m
    }

如果断言值不是给定类型,ok将是 false
如果你避免第二个返回值,程序会因为错误的断言而 panic 。

我强烈建议您通过https://tour.golang.org

关于go - 如何在 GO 中将 interface{} 转换为 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61038607/

相关文章:

go - 创建结构时正确使用接口(interface)

go - 如何使golang grpc客户端遵循重定向

go - 我应该用 go run 运行服务器吗?或 ./main 有什么区别?

go - Go中的光标键终端输入

go - 了解接口(interface)中的接口(interface)(嵌入式接口(interface))

golang 从接口(interface)获取值{}

go - 解码十六进制时间戳,可能是文件时间

arrays - 数组 Varchar (psql) 到数组字符串 (golang)

go - 将 JSON 整数解码为空接口(interface)会导致错误的类型断言

json - 将 interface{} 直接转换为 Golang 中的 int,其中 interface 将数字存储为字符串