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

将映射值复制到指针结构

将映射值复制到指针结构

Go
MYYA 2022-06-13 10:29:05
type Foo struct {    A *string    B *string    C *string    D *string}m := map[string]string{"a": "a_value", "b": "b_value", "c": "c_value", "d": "d_value"}a, b, c, d := m["a"], m["b"], m["c"], m["d"]foo := Foo{    A: &a,    B: &b,    C: &c,    D: &d,}有没有办法直接将映射值复制到结构中,而不使用中间局部变量a, b, c, d?显然我不能只写foo := Foo{    A: &m["a"],    B: &m["b"],    C: &m["c"],    D: &m["d"],}因为 Go 认为我想在它还在地图中时获取(不可寻址的)值的地址。
查看完整描述

1 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

为了使其简单、紧凑和可重用,请使用辅助函数或闭包:


p := func(key string) *string {

    s := m[key]

    return &s

}


foo := Foo{

    A: p("a"),

    B: p("b"),

    C: p("c"),

    D: p("d"),

}

在Go Playground上尝试一下。

有关背景和更多选项,请参阅相关:如何在 Go 中执行文字 *int64?


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

添加回答

举报

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