iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > GO >奇异的行为:在Go中解组为结构
  • 331
分享到

奇异的行为:在Go中解组为结构

2024-04-04 23:04:34 331人浏览 独家记忆
摘要

怎么入门golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面编程网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《奇异的行为:在Go中解组为结构》,

怎么入门golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面编程网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《奇异的行为:在Go中解组为结构》,涉及到,有需要的可以收藏一下

问题内容

我正在开发一个工具,可以用来简化创建简单 crud 操作/端点的过程。由于我的端点不知道它们将接收哪种结构,因此我创建了一个用户可以实现的接口,并返回一个要填​​充的空对象。

type itemfactory interface {
    generateemptyitem() interface{}
}

用户会实现类似的东西:

type test struct {
    teststring string `JSON:"teststring"`
    testint int `json:"testint"`
    testbool bool `json:"testbool"`
}

func (t test) generateemptyitem() interface{} {
    return test{}
}

当 test 对象被创建时,它的类型是“test”,即使 func 返回了一个 interface{}。然而,一旦我尝试将一些相同格式的 json 解组到其中,它就会剥离它的类型,并变成“map[string]interface {}”类型。

item := h.itemfactory.generateemptyitem()

//prints "test"
fmt.printf("%t\n", item)

fmt.println(reflect.typeof(item))

err := convertrequestbodyintoobject(r, &item)
if err != nil {...}

//prints "map[string]interface {}"
fmt.printf("%t\n", item)

解组项目的函数:

func ConvertRequestBodyIntoObject(request *Http.Request, object interface{}) error {
    body, err := ioutil.ReadAll(request.Body)
    if err != nil {
        return err
    }

    // Unmarshal body into request object
    err = json.Unmarshal(body, object)
    if err != nil {
        return err
    }

    return nil
}

关于为什么会发生这种情况,或者我如何解决这个问题,有什么建议吗?

谢谢


解决方案


您的问题缺少显示此行为的示例,因此我只是猜测这就是正在发生的情况。

func generate() interface{} {
    return test{}
}

func generatepointer() interface{} {
    return &test{}
}

func main() {

    vi := generate()
    json.unmarshal([]byte(`{}`), &vi)
    fmt.printf("generate type: %t\n", vi)

    vp := generatepointer()
    json.unmarshal([]byte(`{}`), vp)
    fmt.printf("generatep type: %t\n", vp)
}

哪些输出:

Generate Type: map[string]interface {}
GenerateP Type: *main.Test

我建议您在 generateemptyitem() 中返回一个指针,而不是 generatep() 示例中演示的实际结构值。

Playground Example

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《奇异的行为:在Go中解组为结构》文章吧,也可关注编程网公众号了解相关技术文章。

您可能感兴趣的文档:

--结束END--

本文标题: 奇异的行为:在Go中解组为结构

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 奇异的行为:在Go中解组为结构
    怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面编程网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《奇异的行为:在Go中解组为结构》,...
    99+
    2024-04-04
  • JSON 数组作为 Go 结构
    php小编鱼仔为您介绍JSON数组作为Go结构的使用方法。在Go语言中,JSON数组是一种常见的数据结构,它可以用来表示多个相同类型的数据。通过将JSON数组映射为Go的结构体,我们可...
    99+
    2024-02-10
    go语言 json数组
  • Go 中追加的奇怪行为
    问题内容 我正在尝试使用 Go 解决 LeetCode 上的子集问题。我想出了以下解决方案: func subsets(nums []int) [][]int { sol := make([][]in...
    99+
    2024-02-02
  • 在 Go 中解组 sql.NullTime 结构
    php小编小新在Go语言中,我们经常会使用sql.NullTime结构来处理数据库中的时间字段。NullTime结构可以表示一个可空的时间值,非常适用于处理数据库中的空值。在本文中,我...
    99+
    2024-02-09
    go语言
  • Gorm 结构填充问题导致异常行为
    今天编程网给大家带来了《Gorm 结构填充问题导致异常行为》,其中涉及到的知识点包括等等,无论你是小白还是老手,都适合看一看哦~有好的建议也欢迎大家在评论留言,若是看完有所收获,也希望大家能多多点赞...
    99+
    2024-04-04
  • 描述可变结构行为的 Go 类型约束
    php小编新一今天为大家介绍一种描述可变结构行为的 Go 类型约束。在 Go 语言中,我们可以使用接口类型来定义一组方法的集合,并通过类型约束来限制传入参数的类型。这种方式可以在编译时...
    99+
    2024-02-08
  • Java中为什么会出现Exception结构异常
    这期内容当中小编将会给大家带来有关Java中为什么会出现Exception结构异常,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1. Java异常Exception的结构分析我们通常所说的Exceptio...
    99+
    2023-05-31
    java exception 中为
  • C#中怎么将结构体转换为数组
    本篇文章给大家分享的是有关C#中怎么将结构体转换为数组,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。(1)解决C#结构体数组间的转化之定义结构体://命名空间 &nb...
    99+
    2023-06-18
  • 无法将 dynamodb 结果解组到字段定义为类型接口的结构中
    今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《无法将 dynamodb 结果解组到字段定义为类型接口的结构中》,主要内容是讲解等等,感兴趣的朋友可以收藏或者有更...
    99+
    2024-04-05
  • 如何理解Linux中Xen的奇异架构
    如何理解Linux中Xen的奇异架构,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。  这一篇我要体验的虚拟机系统是Xen。在虚拟机领域,Xen具有非常高的知名度,其名字经常...
    99+
    2023-06-13
  • 我如何解组 JSON 数据并将其存储在 Go 中的结构中
    php小编草莓分享一种解组JSON数据并将其存储在Go语言结构中的方法。JSON是一种常用的数据交换格式,Go语言提供了方便的解析和处理JSON数据的工具包。通过使用Go语言内置的"j...
    99+
    2024-02-11
    go语言
  • Java反射的魔幻世界:理解类的结构和行为
    进入反射的魔幻世界,我们首先需要理解反射的核心——Class对象。Class对象充当了类的映射,掌握着类及其成员的全部信息。我们可以通过反射工具读取这些信息,并动态地操作类。在大多数情况下,可以通过Class.forName()方法,例如...
    99+
    2024-02-08
    Java 反射 类结构 方法 动态管理 修改 控制
  • 细说Go语言中空结构体的奇妙用途
    目录1. 空结构体的定义和初始化2. 空结构体的大小和内存占用3. 空结构体作为占位符4. 空结构体作为通道元素5. 空结构体作为 map 的占位符6. 空结构体作为方法接收器7. ...
    99+
    2023-05-18
    Go语言空结构体使用 Go语言空结构体 Go语言 结构体
  • Go Lang 中继承的结构体数组
    Go Lang 是一种现代化的编程语言,它以其简洁高效的特点在编程界迅速崭露头角。在 Go Lang 中,结构体(Struct)是一种常见的数据类型,它可以用来组织和存储一组相关的数据...
    99+
    2024-02-09
  • Go和C中的数据结构对齐差异
    php小编西瓜在这里为大家介绍一下Go和C中的数据结构对齐差异。在编程语言中,数据结构对齐是为了提高内存访问效率而进行的一种内存对齐方式。然而,Go和C在数据结构对齐方面存在一些差异。...
    99+
    2024-02-09
    go语言 typedef
  • 对于同一结构体,Golang 在 for 循环中 defer 的行为有所不同
    问题内容 我编写了以下 golang 代码并运行了它。 type test struct { name string } func (t test) hello() { ...
    99+
    2024-02-06
  • 解析常见的数据结构在Go语言中
    Go语言是近年来备受关注和应用的一种编程语言,其简洁、高效和并发性能受到了广大开发者的喜爱。在Go语言中,数据结构是开发过程中不可或缺的一部分,它能够有效地组织和存储数据,提高程序的性能和可维护性。本文将介绍...
    99+
    2024-01-18
    Go语言 数据结构 解析
  • 关于JavaScript中parseInt()的一个怪异行为解决
    目录1. parseInt() 中的一个怪异行为2.解决 parseInt() 该怪异行为3. 总结parseInt() 是一个内置的 JavaScript 函数,它可以将数字字符串...
    99+
    2022-12-08
    js中的parseint js parseint js parseInt()
  • 对Go语言中的数组数据结构进行深入分析
    数组数据结构: 数组是一种基本的数据结构,它包含一系列元素,每个元素都有一个索引。数组中的元素可以是任何类型,包括其他数组。数组的大小在创建时确定,并且在以后不能改变。 代码示例:// 创建一个包含 5 个整...
    99+
    2024-02-01
    数据结构 解读 go数组 go语言
  • 如何将结构体切片编组为有效的 JSON
    偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《如何将结构体切片编组为有效的 JSON》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就...
    99+
    2024-04-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作