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

如何在 Go 语言中为结构使用动态键?

如何在 Go 语言中为结构使用动态键?

Go
慕斯王 2022-11-23 20:05:41

我有这个用于从 Json 字符串获取数据的结构。


    type msg struct {

         Msg1 string   `json:"msg1"`

         Msg2 string  `json:"msg2"`

         Msg3 string `json:"msg3"`

    }

我需要像下面这样使用这个结构。


num := // some random number under 3

data := msg.Msg + num  // as msg.Msg1, msg.Msg2...

我怎么能在 Go 语言中做到这一点?

我搜索了很多但找不到任何好的解决方案。


查看完整描述

2 回答

?
泛舟湖上清波郎朗

TA贡献1525条经验 获得超3个赞

如何在 Go 语言中为结构使用动态键?

你根本做不到。这在 Go 中是不可行的。

(如果需要,请使用地图。)


查看完整回答
反对 回复 2022-11-23
?
拉丁的传说

TA贡献1485条经验 获得超8个赞

只是告诉你如何使用 Json 和地图,可能会有帮助


package main


import (

    "fmt"

    "encoding/json"

)

type sample struct{

    Member1 string `json:"TheMember1"`

}



func main() {

    map_contains := make(map[string]string)

    //Part 1 Direct Add to Map

    map_contains["w"]="mmmmm"

    fmt.Println(map_contains)

    fmt.Println(map_contains["w"])

    

    //Part 2 JsonString to Map

    json.Unmarshal([]byte(`{"a":"123"}`),&map_contains)

    fmt.Println(map_contains)

    fmt.Println(map_contains["a"])


    //Part 3 Struct To JsonString To Map

    s1:=sample{

        Member1:"June",

    }

    s1json,err:=json.Marshal(s1)

    if err != nil {

        panic(err)

    }

    fmt.Println(string(s1json))

    json.Unmarshal(s1json,&map_contains)

    fmt.Println(map_contains)

    fmt.Println(map_contains["TheMember1"])

}


查看完整回答
反对 回复 2022-11-23

添加回答

举报

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