170 похожих чатов

Подскажите, пожалуйста c указателями: Как я понял, в golang, передавая структуру

в функцию, она передаётся по значению ( т.е происходит копирование ). Правильно ли я понимаю, что если вызывать рекурсивную функцию с 1 аргументом - структурой, передав её по значению, то на каждой итерации будет происходить копирование ?)

7 ответов

17 просмотров

Если вы не будете брать указатели от параметра, то она не только будет копироваться, но и окажется на стеке

Евгений Омельченко
Если вы не будете брать указатели от параметра, то...

по поводу того что оказывается на стеке кажется "все не так однозначно" и это решает сам GO. Кажется повлиять на это практически невозможно... Я не прав?

ddpvfpd
повлиять возможно

да блин опять ссылку съело ))) Как? на голанг орг в разделе doc/faq#stack_or_heap "The storage location does have an effect on writing efficient programs. When possible, the Go compilers will allocate variables that are local to a function in that function's stack frame. However, if the compiler cannot prove that the variable is not referenced after the function returns, then the compiler must allocate the variable on the garbage-collected heap to avoid dangling pointer errors. Also, if a local variable is very large, it might make more sense to store it on the heap rather than the stack." Тоесть мы можем предположить, что так будет. Но явно влиять не можем

Евгений Омельченко
Если вы не будете брать указатели от параметра, то...

var s int return func() { s++ } я не брал указателей, но s явно не на стеке

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта