К вопросам

Основы Go

Тест · Вопрос 3 из 5

Тест

Вопрос 3

Что напечатает эта программа?

Go
package main

import "fmt"

func add(value *int) {
	newVal := *value + 1
	value = &newVal
}

func main() {
	val := 1
	add(&val)
	fmt.Println(val)
}
Варианты ответа

Выберите один ответ

Параметр `value` — копия указателя: через `*value` можно менять значение по исходному адресу, но присваивание `value = &newVal` меняет только локальную копию указателя в `add`, а не `val` в `main`. Увеличенное значение в `newVal` обратно в `val` не попадает, поэтому остаётся `1`.