iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >附加到指针切片
  • 800
分享到

附加到指针切片

2024-02-06 11:02:08 800人浏览 独家记忆
摘要

问题内容 Go 是我的第一种编程语言,我正在尝试通过编写一个根据分类法组织信息的程序来学习指针。我在理解如何附加到指针切片时遇到一些困难。 type list struct {

问题内容

Go 是我的第一种编程语言,我正在尝试通过编写一个根据分类法组织信息的程序来学习指针。我在理解如何附加到指针切片时遇到一些困难。

type list struct {
    taxonomies []taxonomy
}

func (l *list) add(t taxonomy) {
    var exists bool
    var existing *taxonomy
    for _, taxonomy := range l.taxonomies {
        if taxonomy.name == t.name {
            exists = true
            existing = &taxonomy
        }
    }
    if exists {
        for _, term := range t.data {
            termexists := false
            for _, existingterm := range existing.data {
                if existingterm.name == term.name {
                    termexists = true
                    break
                }
            }
            if termexists {
                continue
            }
            (*existing).data = append((*existing).data, term)
        }
    } else {
        l.taxonomies = append(l.taxonomies, t)
    }
}

type taxonomy struct {
    name string
    data []term
}

type term struct {
    name, link string
}

我认为问题出在底部,这一行:

(*existing).Data = append((*existing).Data, term)

通过跟踪调试器中的代码,我可以看到当追加发生时,存储在“现有”变量中的分类法正在更新,但实际列表中的数据并未更新。

谁能告诉我哪里出错了?


正确答案


l.taxonomies[]taxonomy,因此 taxonomy 值将是该元素的副本,对该副本的更改不会反映在原始 list 值中。

您可以使用索引进行迭代以避免复制值

for i := range l.taxonomies {
    if l.taxonomies[i].name == t.name {
        exists = true
        existing = &l.taxonomies[i]
    }
}

但是,仍然可以复制传递给 append 等方法的数据。相反,最好在整个过程中使用指针:

type List struct {
    Taxonomies []*Taxonomy
}

func (l *List) Add(t *Taxonomy) {
...

以上就是附加到指针切片的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: 附加到指针切片

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

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

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

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

下载Word文档
猜你喜欢
  • 附加到指针切片
    问题内容 go 是我的第一种编程语言,我正在尝试通过编写一个根据分类法组织信息的程序来学习指针。我在理解如何附加到指针切片时遇到一些困难。 type list struct { ...
    99+
    2024-02-06
  • 将元素附加到结构体切片
    php小编柚子在这里向大家介绍一种酷炫的技巧——将元素附加到结构体切片。结构体切片是一种在Golang中使用的数据结构,它可以存储不同类型的元素,并且具有动态扩展的能力。通过将元素附加...
    99+
    2024-02-09
  • 指向 Golang 切片的指针
    “纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《指向 Golang 切片的指针》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章...
    99+
    2024-04-04
  • 如何将 big.Int 数字附加到 big.Int 切片?
    小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《如何将 big.Int 数字附加到 big.Int 切片?》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许...
    99+
    2024-04-04
  • 修改切片副本中的值然后附加到原始切片
    在PHP中,切片(Slice)是一种常用的数据结构,它允许我们从一个数组或切片中选取一部分元素。然而,有时候我们需要对切片进行修改,并将修改后的值附加到原始切片中。这种操作在PHP中是...
    99+
    2024-02-09
  • 附加到作为空接口传递的 golang 切片
    从现在开始,努力学习吧!本文《附加到作为空接口传递的 golang 切片》主要讲解了等等相关知识点,我会在编程网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容...
    99+
    2024-04-05
  • Go - 将指向结构切片的指针转换为接口切片
    php小编百草在Go编程语言中,有时候我们需要将指向结构切片的指针转换为接口切片。这种转换在一些特定的情况下非常有用,例如当我们需要对一个切片中的元素进行修改时。通过将指针转换为接口切...
    99+
    2024-02-09
  • 如何附加到元素类型不是golang中命名类型的切片
    php小编香蕉为您介绍如何附加到元素类型不是golang中命名类型的切片。在Golang中,我们可以使用内置的append函数将元素附加到切片中,但是如果切片的元素类型不是命名类型,即...
    99+
    2024-02-09
  • Go 中将 int 切片转换为自定义 int 切片指针类型的函数
    php小编新一今天为大家介绍的是在Go语言中将int切片转换为自定义int切片指针类型的函数。在Go语言中,切片(slice)是一个非常常用的数据类型,可以动态地增加或减少元素个数。有...
    99+
    2024-02-08
    go语言
  • 有没有更简单的方法来附加结构体切片?
    怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面编程网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《有没有更简单的方法来附加结构体切片...
    99+
    2024-04-05
  • 去 |附加切片并发送到可变参数函数的高效且可读的方法
    问题内容 假设我有以下功能管道: func func3(opts ...functionobject) { for _, opt := range opts { ...
    99+
    2024-02-05
  • 在切片上使用复制而不是附加总是更快吗?
    问题内容 当对切片进行迭代增长时,很容易看出为什么首先分配大小(如果已知)比使用追加函数更有效,因为后者将在每次迭代时决定是否增加大小切片容量。但我很想知道,当以非迭代方式连接两个大切...
    99+
    2024-02-12
  • Golang切片追加异常
    怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面编程网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《Golang切片追加异常》,涉及到...
    99+
    2024-04-04
  • 如何访问结构体的指针切片字段内的嵌入结构体
    php小编草莓为您介绍如何访问结构体的指针切片字段内的嵌入结构体。在Go语言中,我们可以使用指针切片来存储结构体数据,并且在结构体中嵌入其他结构体作为字段。然而,访问嵌入结构体字段需要...
    99+
    2024-02-09
    go语言
  • 如何将元素从一个切片移动到另一个切片
    php小编苹果将为大家介绍如何将元素从一个切片移动到另一个切片的方法。在编程中,切片是一种常用的数据结构,它可以存储多个元素。有时候,我们需要将某个元素从一个切片中取出,并将其移动到另...
    99+
    2024-02-10
  • 在 Golang 中将一个字节切片压缩到另一个切片中
    问题内容 我想实现与此处给出的解决方案完全相反的效果,将一个字节片段压缩到另一个字节片段中 - 将压缩的 []byte 转换为解压的 []byte golang 代码 类似 - fun...
    99+
    2024-02-12
  • 使用“reflect”将数据附加到指向已定义结构的接口
    偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《使用“reflect”将数据附加到指向已定义结构的接口》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少...
    99+
    2024-04-05
  • C++ 智能指针:让指针更加智能,摆脱内存管理的烦恼
    智能指针:c++++ 中的特殊指针,封装原始指针,提供额外的功能。类型:std::unique_ptr:唯一所有权,指针失效后释放内存。std::shared_ptr:共享所有权,最后一...
    99+
    2024-05-09
    c++ 智能指针
  • C++ 智能指针:从基础到高级
    智能指针是 c++++ 专用指针,能够自动释放堆内存对象,避免内存错误。类型包括:unique_ptr:独占所有权,指向单一对象。shared_ptr:共享所有权,允许多个指针同时管理对...
    99+
    2024-05-09
    c++ 智能指针 作用域
  • CGO C# 字符串数组到 GO 切片
    本篇文章给大家分享《CGO C# 字符串数组到 GO 切片》,覆盖了Golang的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识...
    99+
    2024-04-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作