如何在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.usem:=v.(Map)
来断言v
是一个Map
。我注意到的一个是fmt.Println(“键:%v值:%v”,k,v)
这里你需要使用fmt.Printf
。看看,可能有用