在等效的Go地图之间转换

时间:2017-10-31 03:04:52

标签: dictionary go unsafe

我一直在寻找一种方法将地图转换为另一张地图,而无需按键复制。两个映射都具有等效的密钥类型(如下所示)。

下面的代码似乎可以完成这项工作,但我想知道如果我使用它会有什么样的陷阱?

package main

import (
 "fmt"
 "unsafe"
)

type A string
var (
  x A = "x"
  y A = "y"
)

func main() {
    a := map[A]string{}
    a[x] = "242342"
    a[y] = "1234"

    b := convert(a)

    fmt.Println(a[x])
    fmt.Println(b["x"])

    fmt.Println(a[y])
    fmt.Println(b["y"])
}

func convert(in map[A]string) map[string]string {
    return *(*map[string]string)(unsafe.Pointer(&in))
}

0 个答案:

没有答案
相关问题