Вступить в клуб →
лёгкаявопросОсновы Go: типы, ошибки, интерфейсы

Почему счётчик в структуре не меняется после вызова функции

Разработчик написал функцию инкремента и не понимает результат:

type Counter struct{ N int }

func inc(c Counter) { c.N++ }

func main() {
    c := Counter{}
    inc(c)
    inc(c)
    fmt.Println(c.N)
}

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

  • `2` — структура передаётся по ссылке, как в Java
  • `1` — второй вызов не влияет на уже изменённое поле
  • `0` — в функцию попадает копия структуры, оригинал не меняется
  • Код не соберётся: изменять поле аргумента запрещено

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела