Назад к задачам
Junior — Senior
66

Особенности использования указателей внутри цикла range

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Вопрос: какие числа будут напечатаны, если сохранять ссылки на переменную‑итератор внутри цикла range, и почему полученный вывод может отличаться от ожидаемого?

package main

import (
    "fmt"
)

func main() {
    var ptrs []*int               // срез указателей
    for _, v := range []int{10, 20, 30, 40} {
        ptrs = append(ptrs, &v)   // сохраняем адрес переменной‑итератора
    }

    for _, p := range ptrs {
        fmt.Printf("%d ", *p)   // выводим значение, на которое указывает каждый указатель
    }
}