Назад к вопросам
Avito
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) }
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Код выведет:
1 2
Объяснение:
- Метод
IncVal()имеет получателя по значению (c Counter), поэтому внутри метода создаётся копия структурыCounter. Увеличениеc.val++изменяет копию, а не оригинал, поэтому значениеvalвmainостаётся 1. - Метод
IncPtr()имеет получателя по указателю (c *Counter), поэтому изменения внутри метода влияют на оригинальный объект. После вызоваc.IncPtr()значениеvalувеличивается на 1 и становится 2.
Таким образом, сначала выводится 1, затем после вызова метода с указателем — 2.