登录
首页 >  Golang >  Go问答

Go 语言中如何实现结构体的动态字段?

来源:stackoverflow

时间:2024-03-09 10:45:25 210浏览 收藏

今天golang学习网给大家带来了《Go 语言中如何实现结构体的动态字段?》,其中涉及到的知识点包括等等,无论你是小白还是老手,都适合看一看哦~有好的建议也欢迎大家在评论留言,若是看完有所收获,也希望大家能多多点赞支持呀!一起加油学习~

问题内容

我有这个结构用于从 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 语言中执行此操作?

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


正确答案


只是向您展示如何使用 json 和 map,可能会有所帮助

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"])
}

你根本做不到。这在 go 中是不可能的。

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

理论要掌握,实操不能落!以上关于《Go 语言中如何实现结构体的动态字段?》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>