那是因为当您使用指针时,您将添加
&w到数组。
请注意,
w实际上这是循环中使用的局部变量,因此,这不是您要添加到
matches数组中的地址。
(即使变量的 值
w在循环中发生变化,其 地址也 保持不变)
循环结束时,
w以最后一个值结束,这就是为什么它打印
12两次的原因。
您需要添加匹配的元素的地址。
如果您这样做:
matches = append(matches, &widgets[i])
然后它也可以很好地与指针一起工作。
修改后的Go游乐场供您测试:
https://play.golang.org/p/YE-cokyEHu



