Sobes.tech
Назад к вопросам
Intern
3

Что выведет код при выполнении? package main import "fmt" type Counter struct { val int } func (c Counter) IncVal() { c.val++ } func (c *Counter) IncPtr() { c.val++ } func main() { c := Counter{val: 1} c.IncVal() fmt.Print(c.val, " ") c.IncPtr() fmt.Print(c.val) }

Компании, где спрашивали
AvitoAvito

Ответ от нейросети

sobes.tech AI

Код выведет:

1 2

Объяснение:

  • Метод IncVal() имеет получателя по значению (c Counter), поэтому внутри метода создаётся копия структуры Counter. Увеличение c.val++ изменяет копию, а не оригинал, поэтому значение val в main остаётся 1.
  • Метод IncPtr() имеет получателя по указателю (c *Counter), поэтому изменения внутри метода влияют на оригинальный объект. После вызова c.IncPtr() значение val увеличивается на 1 и становится 2.

Таким образом, сначала выводится 1, затем после вызова метода с указателем — 2.