1. Задача: Что выведет программа с циклом и указателями в Go 1.19?
func main() {
var numbers []*int
for _, value := range []int{1, 2, 3, 4} {
numbers = append(numbers, &value)
}
for _, number := range numbers {
fmt.Printf("%d", *number)
}
}Ответ
До версии 1.22 переменная value — это один и тот же участок памяти. Слайс будет содержать 4 ссылки на один объект, выведутся четыре последние цифры (4, 4, 4, 4). В новых версиях Go выведутся 1, 2, 3, 4.
2. Задача: Реализовать функцию double, удваивающую значения в numbers, без изменения сигнатуры
func main() {
var numbers []*int
for _, value := range []int{1, 2, 3, 4} {
numbers = append(numbers, &value)
v := 5
numbers =…