我有一個(gè)結(jié)構(gòu)數(shù)組和一個(gè)在該數(shù)組中查找具有給定 ID 的結(jié)構(gòu)的方法。如果它存在,我想將它復(fù)制到結(jié)構(gòu)本身。但我無(wú)法讓它發(fā)揮作用。我可以讓它與Marshaland 一起工作Unmarshal,但我認(rèn)為這不是一個(gè)好的解決方案。https://play.golang.org/p/16giIQ0R1Hvpackage mainimport ( "fmt")type Tmp struct { ID int Val int}var members []Tmpfunc (o *Tmp) FindID(id int) { for i := range members { if members[i].ID == id { fmt.Println("found!") fmt.Println(members[i]) tmp := members[i] o = &tmp } }}func main() { for i := 0; i < 5; i++ { o := Tmp{ID: i, Val: i * 2} members = append(members, o) } fmt.Println(members) a := Tmp{} a.FindID(3) fmt.Println(a)}這輸出:[{0 0} {1 2} {2 4} {3 6} {4 8}]found!{3 6}{0 0}
1 回答

躍然一笑
TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以使用解引用運(yùn)算符為指針賦值
*o = members[i]
所以,在你的情況下:
func (o *Tmp) FindID(id int) bool {
for i := range members {
if members[i].ID == id {
*o := members[i]
return true
}
}
return false
}
我冒昧地讓函數(shù)指示(通過(guò)返回值)它是否真的找到了任何東西;當(dāng)然,您可以忽略該更改。
- 1 回答
- 0 關(guān)注
- 99 瀏覽
添加回答
舉報(bào)
0/150
提交
取消