gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 02:19:52 26 4
gpt4 key购买 nike

我有一个结构数组和一个在该数组中查找具有给定 ID 的结构的方法。如果它存在,我想将它复制到结构本身。但我无法让它发挥作用。

我可以让它与 MarshalUnmarshal 一起工作,但我认为这不是一个好的解决方案。

https://play.golang.org/p/16giIQ0R1Hv

package main

import (
"fmt"
)

type Tmp struct {
ID int
Val int
}

var members []Tmp

func (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}

最佳答案

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

*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
}

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

关于pointers - 如何编写将数组成员分配给 self 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54121749/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com