为了账号安全,请及时绑定邮箱和手机立即绑定

切片方法.

切片方法.

Go
慕容3067478 2023-06-19 14:00:22
尽管我认为标题中没有正确描述我遇到的问题,但这是我现在能够描述的唯一方式。Mini我有一个在另一个文件中定义的结构。一组 Minis 应该被描述为一片。因为我想在Mini将结构附加到切片时更改结构的某些字段,所以需要用于附加的自定义函数。直到现在我得到以下代码:import (    "fmt"    "reflect")//Minis is a slice of all Ministype Minis struct {    AllMinis []*Mini}//Append adds a new Mini to the Minis slicefunc (m *Minis) Append(n *Mini) {    m.AllMinis = append(m.AllMinis, n)}这段代码工作得很好。但在我看来,只有一个字段的结构有点愚蠢。有什么方法可以在结构上创建方法或一般更优雅的解决方案?谢谢!
查看完整描述

1 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

将类型声明为切片:


//Minis is a slice of all Minis

type Minis []*Mini


//Append adds a new Mini to the Minis slice

func (m *Minis) Append(n *Mini) {

    *m = append(*m, n)

}

在操场上运行它


concat恐慌,因为QForename将一个 nil 切片指针作为接收者传递给concat. 使用非零指针修复:


func (m *Minis) QForename(q string) *Minis {

    var matches Minis

    for _, n := range *m {

        if n.Forename == q {

            matches.concat(n)

        }

    }

    return &matches

}


查看完整回答
反对 回复 2023-06-19
  • 1 回答
  • 0 关注
  • 104 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信