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以外的其他类型的可能性。