Sobes.tech
Junior — Senior
56

Неожиданное поведение указателей, получаемых в range, при их добавлении в срез

Условие задачи

Определите, какие числа будут напечатаны программой, и поясните причину странного результата, возникающего при итерации по массиву с помощью цикла range и сохранении полученных указателей в срез.

package main

import "fmt"

func main() {
  first := []int{10, 20, 30, 40}
  second := make([]*int, len(first))
  for i, v := range first {
    second[i] = &v
  }
  fmt.Println(*second[0], *second[1])
}