Go 切片法

Go 切片法,go,methods,slice,Go,Methods,Slice,虽然我认为标题中没有正确描述我遇到的问题,但这是我现在唯一能够描述它的方法 我有一个在另一个文件中定义的结构Mini。一组微型计算机应描述为一个切片。因为我想在将Mini结构附加到切片时更改它的一些字段,所以需要用于附加的自定义函数 到目前为止,我得到了以下代码: 导入( “fmt” “反映” ) //迷你们是所有迷你们的一部分 类型mini结构{ AllMinis[]*Mini } //Append将新的Mini添加到Mini切片 func(m*Mini)追加(n*Mini){ m、 AllM

虽然我认为标题中没有正确描述我遇到的问题,但这是我现在唯一能够描述它的方法

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

到目前为止,我得到了以下代码:

导入(
“fmt”
“反映”
)
//迷你们是所有迷你们的一部分
类型mini结构{
AllMinis[]*Mini
}
//Append将新的Mini添加到Mini切片
func(m*Mini)追加(n*Mini){
m、 AllMinis=append(m.AllMinis,n)
}
这段代码工作得非常好。 但在我看来,一个只有一个字段的结构有点愚蠢

有没有办法在结构上创建一个方法,或者在一般情况下创建一个更优雅的解决方案


谢谢

将类型声明为切片:

//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
}

将类型声明为切片:

//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
}

非常感谢。这解决了我的问题。忘记了制作struct以外的其他类型的可能性。谢谢!这解决了我的问题。忘记了创建struct以外的其他类型的可能性。