当前位置: 首页 > 面试题库 >

Golang动态创建结构成员

贡建修
2023-03-14
问题内容

我知道Go中有结构,但就我所知,您必须定义结构

type Circle struct{
    x,y,r float64
}

我想知道如何声明结构中不存在的新变量

circle := new(Circle)
circle.color = "black"

问题答案:

您将需要使用地图(类型为map[string]interface{})来处理动态JSON。这是创建新地图的示例:

// Initial declaration
m := map[string]interface{}{
    "key": "value",
}

// Dynamically add a sub-map
m["sub"] = map[string]interface{}{
    "deepKey": "deepValue",
}

将JSON解组到地图中看起来像:

var f interface{}
err := json.Unmarshal(b, &f)

上面的代码将为您提供的地图f,其结构类似于:

f = map[string]interface{}{
    "Name": "Wednesday",
    "Age":  6,
    "Parents": []interface{}{
        "Gomez",
        "Morticia",
    },
}

您将需要使用类型断言来访问它,否则Go不会知道它是一个映射:

m := f.(map[string]interface{})

您还需要在从地图中拉出的每个项目上使用断言或键入开关。处理非结构化JSON很麻烦。

更多信息:

  • https://blog.golang.org/json-and-go
  • https://godoc.org/encoding/json#Unmarshal


 类似资料:
  • 问题内容: 有没有办法复制通用结构(即属性名称未知的结构)并跳过单个已知属性? 这是我所知道的: 我函数的参数-我将称为参数-类型。 是一个结构。 具有已知的性质。 具有0到6左右的其他属性,这些属性都不是先验的。 一旦删除该属性,那么“剩余”就是30种可能的结构类型之一。 所以我想剥离出来(或更精确地进行复制,它省略),所以生成的代码的各个位,尝试了结构迫使其可能的类型之一就能成功。 我已经找到

  • 可以看到AWS MSK的主题CDC偏移正在消耗。不会抛出任何错误。但是,在AWS S3中,没有为新数据创建文件夹结构,也没有存储JSON数据。 问题 连接器是否应该在看到主题的第一个JSON数据包时动态创建文件夹结构? 除了配置awscli凭据、connect.properties和s3-sink.properties之外,是否还需要设置其他设置才能正确连接到S3存储桶? 关于安装文档的建议比Co

  • 我有一个包含100列的数据框: 我有一个列名列表: 结构列表=['column4','column3','column2'] 预期架构: 目前,我正在对以下值进行硬编码: 是否有一种方法可以动态传递列表中的值?

  • 第一个帖子!和一个java的noob*随便! 我知道有很多关于这个话题的帖子,我已经读过了…我就是解决不了。 我有一个非常简单的HTML表单,有静态输入和动态创建的输入。 HTML自动完成 HTML表单 null AddInput.js 所以问题很简单…给定这些代码,我如何在每个新生成的输入中实现自动完成。 事先多谢。

  • 问题内容: 我正在一个项目中使用JSON作为创建Java对象的配置框架。这也是我来自CF / PHP / JS等方面多年经验的第一个专业Java项目。 在将JSON转换为Java时,我能找到的所有资源都基于以下想法:您必须先在Java中手动构建对象,即POJO,然后使用JSON进行填充。 作为网络语言的资深人士,我对此想法感到窒息。我发现编译后的语言起着不同的作用,但是我认为从命令行到机器语言的共

  • Go 语言中的结构体和 C 语言中结构体一样,都是用来保存一组 不同类型的数据 Go 语言中的结构体和 C 语言中结构体一样,都需要先定义结构体类型再利用结构体类型定义结构体变量 定义结构体类型 type 类型名称 struct{ 属性名称 属性类型 属性名称 属性类型 ... ... } type Studentstruct { name string age int