var all []*Item
for _, item := range items {
all = append(all, &item)
}
Здесь, в
all будет len(item) одинаковых указателей, равных указателю на последний элемент в item, потому что item - переменная цикла - является не per-iteration, а per-loop. То есть, переменная item у нас одна-единственная на все итерации, и при каждой итерации её значение затирается. Это, кстати, как раз та штука, почему надо быть аккуратным с замыканиями в циклах
Кстати, чинится добавлением в теле цикла
item := itemА вот ишью, кстати, советую глянуть. Интересная штука