盡管我認(rèn)為標(biāo)題中沒有正確描述我遇到的問題,但這是我現(xiàn)在能夠描述的唯一方式。Mini我有一個(gè)在另一個(gè)文件中定義的結(jié)構(gòu)。一組 Minis 應(yīng)該被描述為一片。因?yàn)槲蚁朐贛ini將結(jié)構(gòu)附加到切片時(shí)更改結(jié)構(gòu)的某些字段,所以需要用于附加的自定義函數(shù)。直到現(xiàn)在我得到以下代碼: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)}這段代碼工作得很好。但在我看來,只有一個(gè)字段的結(jié)構(gòu)有點(diǎn)愚蠢。有什么方法可以在結(jié)構(gòu)上創(chuàng)建方法或一般更優(yōu)雅的解決方案?謝謝!
1 回答

楊魅力
TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超6個(gè)贊
將類型聲明為切片:
//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恐慌,因?yàn)镼Forename將一個(gè) nil 切片指針作為接收者傳遞給concat. 使用非零指針修復(fù):
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 關(guān)注
- 150 瀏覽
添加回答
舉報(bào)
0/150
提交
取消