尽管我认为标题中没有正确描述我遇到的问题,但这是我现在能够描述的唯一方式。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
}
- 1 回答
- 0 关注
- 104 浏览
添加回答
举报
0/150
提交
取消