返回顶部
首页 > 资讯 > 后端开发 > GO >如何在结构体中嵌套定义两层类型?
  • 292
分享到

如何在结构体中嵌套定义两层类型?

2024-04-04 23:04:58 292人浏览 泡泡鱼
摘要

知识点掌握了,还需要不断练习才能熟练运用。下面编程网给大家带来一个golang开发实战,手把手教大家学习《如何在结构体中嵌套定义两层类型?》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新

知识点掌握了,还需要不断练习才能熟练运用。下面编程网给大家带来一个golang开发实战,手把手教大家学习《如何在结构体中嵌套定义两层类型?》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

问题内容

目前我的结构有以下定义:

type wholeJSON struct {
    features []temp
}

type temp struct {
    properties human
}

type human struct {
    name  string
    age   uint
}

当将 json 字符串解组到 wholejson 类型的变量时,该方法有效,该变量具有以下结构:

{
    "features":[
        {
            "properties": {
                "name": "John Doe",
                "age": 50
            }
        }
    ]
}

此处为演示示例:https://play.Golang.org/p/3wtlxr0ezwp

但是我不知道如何以更简单的方式编写它。显然,就使用它们所保存的信息而言,wholejsontemp 并非都是必需的。我有 temp 的唯一原因是因为我根本不知道如何避免定义它(并且仍然让程序工作)。

大概 wholejsonfeatures 属性会有一个指向某些 interface{}数组,但我无法确定语法。我假设用于读取未编组数据(来自演示示例)的代码将保持不变。

我如何将这两个结构“压缩”为一个(我假设 human 结构如果保持独立就可以),并且最终仍然有有用的数据,我可以在其中循环遍历 features 键浏览所有数据?


正确答案


可以为层次结构的每个级别定义一个类型,并且在从 go 代码构造值时首选此类型。类型不必是 exported。

使用匿名类型来消除已定义的类型:

var sourceData struct {
    Features []struct {
        Properties Human
    }
}

var jsonString string = `{
    "features":[
        {
            "properties": {
                "name": "John Doe",
                "age": 50
            }
        }
    ]
}`
json.Unmarshal([]byte(jsonString), &sourceData)
fmt.Println(sourceData.Features[0].Properties.Name)

本篇关于《如何在结构体中嵌套定义两层类型?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注编程网公众号!

您可能感兴趣的文档:

--结束END--

本文标题: 如何在结构体中嵌套定义两层类型?

本文链接: https://lsjlt.com/news/595973.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何在结构体中嵌套定义两层类型?
    知识点掌握了,还需要不断练习才能熟练运用。下面编程网给大家带来一个Golang开发实战,手把手教大家学习《如何在结构体中嵌套定义两层类型?》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新...
    99+
    2024-04-04
  • c语言如何自定义结构体类型
    在C语言中,可以使用`typedef`关键字来自定义结构体类型。`typedef`关键字用于为已存在的类型定义一个新的名称。以下是定...
    99+
    2023-09-04
    c语言
  • golang中结构体嵌套接口如何实现
    今天小编给大家分享一下golang中结构体嵌套接口如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。在golang中结构...
    99+
    2023-07-05
  • C语言结构体嵌套定义的方法是什么
    在C语言中,可以通过在结构体中嵌套其他结构体来定义一个结构体的成员。具体的方法如下:1. 首先定义一个结构体类型,可以包含多个成员,...
    99+
    2023-08-15
    C语言
  • C#中如何定义结构体
    这篇文章将为大家详细讲解有关C#中如何定义结构体,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C#结构体定义的情况:C#结构体定义也可以象类一样可以单独定义.class  ...
    99+
    2023-06-18
  • Go语言类型内嵌和结构体内嵌如何使用
    这篇文章主要讲解了“Go语言类型内嵌和结构体内嵌如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go语言类型内嵌和结构体内嵌如何使用”吧!结构体可以包含一个或多个匿名(或内嵌)字段,即...
    99+
    2023-07-05
  • 如何访问接口类型数组中嵌套结构的字段
    php小编柚子为你解答如何访问接口类型数组中嵌套结构的字段。在处理接口返回的数据时,有时候会遇到嵌套结构的情况,即数组中包含了更深层次的字段。要访问这些嵌套的字段,我们可以使用点操作符...
    99+
    2024-02-14
  • 如何在 Hyperledger Fabric 上的嵌套结构上处理复杂数据类型?
    编程网今天将给大家带来《如何在 Hyperledger Fabric 上的嵌套结构上处理复杂数据类型?》,感兴趣的朋友请继续看下去吧!以下内容将会涉及到等等知识点,如果你是正在学习Golang或者已...
    99+
    2024-04-05
  • C语言中如何定义结构体
    本篇内容主要讲解“C语言中如何定义结构体”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言中如何定义结构体”吧!什么是结构体?在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚...
    99+
    2023-06-16
  • VueJs中如何使用Teleport及组件嵌套层次结构详解
    目录正文01-组件套组件层次结构很深时02-Teleport组件03-需要知道的04-如何禁用 Teleport05-多个 Teleport 共享目标时总结正文 ...
    99+
    2023-05-14
    VueJs使用Teleport组件 VueJs Teleport嵌套层次结构
  • C语言中如何在结构体内定义函数
    目录如何在结构体内定义函数结构体中引入函数C++中结构体引入C++中类引入结构体成员有函数的定义与使用总结如何在结构体内定义函数 结构体中引入函数 #include <stdi...
    99+
    2023-02-24
    C语言结构体 C语言结构体定义函数 C语言定义函数
  • 怎么在golang中利用结构体嵌套的切片数组
    本篇文章为大家展示了怎么在golang中利用结构体嵌套的切片数组,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。什么是golanggolang 是Google开发的一种静态强类型、编译型、并发型,并具...
    99+
    2023-06-14
  • java结构体数组如何定义
    在Java中,没有内置的结构体类型,但可以使用类来模拟结构体数组的功能。 例如,定义一个名为Person的类来表示一个结构体,包含姓...
    99+
    2024-03-11
    java
  • c语言如何定义结构体
    在 c 语言中定义结构体:使用 struct 关键字声明结构体类型。在花括号中定义字段。使用 sizeof(struct 结构体名称) 分配内存。用点运算符 (.) 访问结构体字段。 ...
    99+
    2024-05-22
    c语言
  • go语言中结构体方法如何定义
    本篇内容主要讲解“go语言中结构体方法如何定义”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“go语言中结构体方法如何定义”吧!go语言中结构体方法的定义方法:1、定义一个结构体,语法“type ...
    99+
    2023-07-05
  • 如何在JavaScript中定义boolean类型
    本篇文章给大家分享的是有关如何在JavaScript中定义boolean类型,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。javascript是一种什么语言javascript...
    99+
    2023-06-14
  • antdform表单中如何嵌套自定义组件
    目录前言表单部分自定义组件总结前言 当某些自定义的组合类组件,也希望能进行表单元素的校验,以及利用antd的form表单实例进行数据的修改或者数据获取,这招便可以派上用场啦~ 表单部...
    99+
    2023-03-12
    antd form表单 嵌套自定义组件 antd自定义组件
  • 无论 Go 中元素的顺序如何,如何在语义上比较结构与嵌套切片
    无论Go中元素的顺序如何,如何在语义上比较结构与嵌套切片是一个常见问题。在Go语言中,结构体是一种聚合数据类型,而切片则是一种动态数组。php小编子墨将为您解答这个问题。在比较结构体时...
    99+
    2024-02-10
    go语言
  • C语言自定义类型详解(结构体、枚举、联合体和位段)
    目录前言一、结构体1、结构体类型的声明2、结构体的自引用3、结构体变量的定义和初始化4、结构体内存对齐5、结构体传参二、位段1、位段的定义 2、位段的内存分配3、位段的应用...
    99+
    2024-04-02
  • 如何在Golang 中区分类型别名与类型定义
    这篇文章将为大家详细讲解有关如何在Golang 中区分类型别名与类型定义,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。golang适合做什么golang可以做服务器端开发,但golang很适...
    99+
    2023-06-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作