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

转到-在结构中附加到切片

于高雅
2023-03-14
问题内容

我正在尝试实现2个简单的结构,如下所示:

package main

import (
    "fmt"
)

type MyBoxItem struct {
    Name string
}

type MyBox struct {
    Items []MyBoxItem
}

func (box *MyBox) AddItem(item MyBoxItem) []MyBoxItem {
    return append(box.Items, item)
}

func main() {

    item1 := MyBoxItem{Name: "Test Item 1"}
    item2 := MyBoxItem{Name: "Test Item 2"}

    items := []MyBoxItem{}
    box := MyBox{items}

    AddItem(box, item1)  // This is where i am stuck

    fmt.Println(len(box.Items))
}

我究竟做错了什么?我只想在框结构上调用addItem方法并在其中传递一个项目


问题答案:

嗯…这是人们在Go中附加到切片时最常犯的错误。您必须将结果分配回slice。

func (box *MyBox) AddItem(item MyBoxItem) []MyBoxItem {
    box.Items = append(box.Items, item)
    return box.Items
}

另外,您已经定义AddItem*MyBox类型,因此将该方法称为box.AddItem(item1)



 类似资料:
  • 我试图实现2个简单的结构如下: 我做错了什么?我只想在box结构上调用addItem方法并传入一个项

  • 以下代码的输出令我惊讶: 在操场上运行时(https://play.golang.org/p/Ph67tHOt2Z_I)输出如下: 我相信我对切片的处理是正确的;据我所知,它在NewThing()中被初始化为nil,并在Add()中被追加(确保从append返回的值只分配给它的第一个参数)。 我错过了一些非常明显的东西吗? 我查看了以下资源以获得解释: https://gobyexample.co

  • 问题内容: 组装传递给GRMustache.swift的数据有效载荷以渲染胡子模板时,我处于一种需要将数据附加到先前在字典中定义的数组的场景中。 我的数据结构开始于: 该密钥对是一家集我需要一个循环内后追加。 要添加到数组中,我正在尝试类似的方法: 此错误,因为type的值没有成员,并且二进制运算符不能应用于type 和的操作数。 这很有意义,因为我需要强制转换要附加的值。但是,我不能改变数组。

  • 问题内容: 我想创建一个切片图,将值附加到相应切片上。但是,当尝试直接附加到通过访问它返回的切片时(请参见下面的注释),它不会被存储,因此我不得不使用长格式访问(注释下方的行)。 为什么会这样呢?我希望访问地图可以返回某种指针,所以在我看来;显然,我错了。 谢谢! 问题答案: 如果基础数组必须增长以适应新元素,则append返回一个新切片。因此,是的,您必须将新的切片放回地图中。例如,这与字符串的

  • 我试图理解如何在Go中操作数据结构,以及它指向指针(带有副本或引用)的方法。 我的代码在Go Playground这里:https://play.golang.org/p/j_06RS5Xcz 我制作了一个结构的切片图,里面还有一个其他东西的切片。 在这里: 我想在以后的程序中附加其他项。似乎我必须使用指针来解决这个问题,但我不知道如何解决。 我的实体应该是这样吗? 如果是这样的话,我应该如何向它

  • 问题内容: Go编译器抱怨我的代码将切片附加到切片。以下是相关摘录: 该行生成以下编译器消息: 我知道,根据Go Blog帖子中 标题为Append:the Built-in function 一节下的示例,将切片追加到切片会很好。 问题答案: 您需要使用: 另外,还请格式化您的代码:) 您还应该阅读Wiki上的Slice Tricks。