为了账号安全,请及时绑定邮箱和手机立即绑定

如何编写将数组成员分配给 self 的方法

如何编写将数组成员分配给 self 的方法

Go
森林海 2023-06-01 14:19:23
我有一个结构数组和一个在该数组中查找具有给定 ID 的结构的方法。如果它存在,我想将它复制到结构本身。但我无法让它发挥作用。我可以让它与Marshaland 一起工作Unmarshal,但我认为这不是一个好的解决方案。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贡献1826条经验 获得超6个赞

您可以使用解引用运算符为指针赋值


*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

}

我冒昧地让函数指示(通过返回值)它是否真的找到了任何东西;当然,您可以忽略该更改。


查看完整回答
反对 回复 2023-06-01
  • 1 回答
  • 0 关注
  • 72 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信