Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在GO中将接口{}强制转换为映射_Go_Go Interface - Fatal编程技术网

如何在GO中将接口{}强制转换为映射

如何在GO中将接口{}强制转换为映射,go,go-interface,Go,Go Interface,我是新手&我正在尝试学习如何将接口{}转换为映射。下面是我试图实现的一个示例 游乐场连接: 谢谢你的帮助 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

我是新手&我正在尝试学习如何将接口{}转换为映射。下面是我试图实现的一个示例

游乐场连接:

谢谢你的帮助

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
主程序包
进口(
“fmt”
)
func main(){
Map:=make(Map[string]接口{})
测试(地图)
对于k,v:=范围映射{
fmt.Println(“键:%v值:%v”,k,v)
}
}
func测试(v接口{})错误{
数据:=make(映射[int]接口{})
对于i:=0;i<10;i++{
数据[i]=i*5
}
对于键,val:=范围数据{
//fmt.Println(“键:%v值:%v”,键,值)
v[key]=val
}
归零

Go支持接口的类型断言。它提供接口中存在的具体值

您可以通过以下代码实现这一点

    m, ok := v.(map[int]interface{})
    if ok {
      // use m
      _ = m
    }
如果断言值不是给定类型,
ok
将是
false

如果避免使用第二个返回值,程序将因错误断言而陷入恐慌


我强烈建议您仔细阅读go支持接口的类型断言。它提供了接口中存在的具体值

您可以通过以下代码实现这一点

    m, ok := v.(map[int]interface{})
    if ok {
      // use m
      _ = m
    }
如果断言值不是给定类型,
ok
将是
false

如果避免使用第二个返回值,程序将因错误断言而陷入恐慌


我强烈建议您浏览

请特别浏览go。不要使用空界面。测试方法类似于预定义方法的副本。因此无法更改,go不像其他语言那样具有强制转换功能。您正在寻找的功能称为a。使用
m:=v.(Map)
断言
v
是一个
Map
。我注意到的一个是
fmt.Println(“键:%v值:%v”,k,v)
这里您需要使用
fmt.Printf
。看一看,可能会有帮助。请特别参观Go。不要使用空界面。测试方法就像预定义方法的副本。因此无法更改,Go不像其他语言那样具有强制转换功能。您正在寻找的功能称为a.use
m:=v.(Map)
来断言
v
是一个
Map
。我注意到的一个是
fmt.Println(“键:%v值:%v”,k,v)
这里你需要使用
fmt.Printf
。看看,可能有用