猿问

切片方法.

尽管我认为标题中没有正确描述我遇到的问题,但这是我现在能够描述的唯一方式。


Mini我有一个在另一个文件中定义的结构。一组 Minis 应该被描述为一片。因为我想在Mini将结构附加到切片时更改结构的某些字段,所以需要用于附加的自定义函数。


直到现在我得到以下代码:


import (

    "fmt"

    "reflect"

)


//Minis is a slice of all Minis

type Minis struct {

    AllMinis []*Mini

}


//Append adds a new Mini to the Minis slice

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

    m.AllMinis = append(m.AllMinis, n)

}

这段代码工作得很好。但在我看来,只有一个字段的结构有点愚蠢。


有什么方法可以在结构上创建方法或一般更优雅的解决方案?


谢谢!


慕容3067478
浏览 105回答 1
1回答

杨魅力

将类型声明为切片://Minis is a slice of all Ministype Minis []*Mini//Append adds a new Mini to the Minis slicefunc (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}
随时随地看视频慕课网APP

相关分类

Go
我要回答