Почему счётчик в структуре не меняется после вызова функции
Разработчик написал функцию инкремента и не понимает результат:
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` — в функцию попадает копия структуры, оригинал не меняется
- Код не соберётся: изменять поле аргумента запрещено
