我正在尝试在 python 中编写等效于以下行的内容
H = [e for e in G if condition(e)]
这是我的示例代码。基本上我只是想使用 getter 函数 (G.get) 来获取G. 所以我想我想arr2成为一个新的数组,但包含相同的对象。
package main
import "fmt"
type Object struct {
x int
}
type Group []Object
func (G *Group) get() (H []Object) {
for _,v := range *G {
H = append(H,v)
}
return
}
func main() {
arr := make(Group,1)
arr[0].x = 1
fmt.Println(arr)
arr2 := arr.get()
arr[0].x = 3
fmt.Println(arr)
fmt.Println(arr2)
}
哪个编译并运行并给我
[{1}]
[{3}]
[{1}]
我的问题是“为什么不arr2包含与 相同的对象实例arr?” 我相信我理解make只实例化一个Group东西,这意味着它包含一个Object东西。但是 for 循环不应该创建一个新的Object应该吗?
守候你守候我
相关分类