将映射值复制到指针结构

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 认为我想在它还在地图中时获取(不可寻址的)值的地址。


MYYA
浏览 128回答 1
1回答

DIEA

为了使其简单、紧凑和可重用,请使用辅助函数或闭包: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?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go