为了账号安全,请及时绑定邮箱和手机立即绑定

在 Golang 中将命名类型映射[字符串]字符串转换为普通类型

在 Golang 中将命名类型映射[字符串]字符串转换为普通类型

Go
慕丝7291255 2023-06-26 15:05:40
我有一张 类型的地图set,实际上是map[string]string. 然而,将它传递给接受 a 的函数会map[string]string失败,因为 Go 不识别set为 1。然而,我无法说服编译器它是其中之一。有没有办法解决这个问题,而不需要循环和复制?package mainimport (    "fmt")type name stringtype field stringtype set map[name]field      // map[string]string after alltype plain map[string]string // also map[string]stringfunc main() {    var typed = set{"hi": "ho"} // map[string]string?    back := plain(typed)  // cannot convert typed (type set) to type plain    back := typed.(plain) // invalid type assertion: typed.(plain) (non-interface type set on left)    echo(back)}func echo(in map[string]string) {    fmt.Println(in)}
查看完整描述

1 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

您可以使用不安全的包来做到这一点。


注意:我认为这不一定是一个好主意,可能正确的方法是迭代和复制,但因为它确实回答了所提出的问题......


var typed = set{"hi": "ho"} // map[string]string?

p := unsafe.Pointer(&typed)

var back plain

back = *(*plain)(p)

游乐场: https: //play.golang.org/p/yienSuJSnQU


查看完整回答
反对 回复 2023-06-26
  • 1 回答
  • 0 关注
  • 151 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信