Size: a a a

2020 February 12

E

Edgar in Go-go!
Так поэтому я и подчернкул, что переменное колличество параметром удобно тем, что позволяет документировать и явно передавать определенные параметры, не затрагивая все остальные
источник

E

Edgar in Go-go!
Хоть 1, хоть 100

И выглядит все равно очень удобно и чисто
источник

E

Edgar in Go-go!
Правда сам выступаю так не делать, если есть возможность избежать этого :D
источник

ВС

Владимир Столяров in Go-go!
мистер никитос
Просто удобно
Если это будет вести себя так, как сейчас в питоне, то на фиг оно не сдалось
источник

AS

Andrey S in Go-go!
Иногда такие дискуссии возникают типа "меня не волнует как но дайте мне переменные пераметры!". А никто не задумывался как это должно быть реализовано на уровне железа?
источник

мн

мистер никитос in Go-go!
Aikidos
Но это не проблема го. Такой же подход в том же расте. Там, правда, есть Option[A] и кидаешь None, если тебе не нужно указывать параметр.
Явное > неявного, в общем. Это нормально.
В таком случае именованные параметры тогда как альтернатива
источник

мн

мистер никитос in Go-go!
Как при инициализации структуры, например, почему бы и да
источник

A

Aikidos in Go-go!
Andrey S
Иногда такие дискуссии возникают типа "меня не волнует как но дайте мне переменные пераметры!". А никто не задумывался как это должно быть реализовано на уровне железа?
Параметры на уровне железа?
источник

AS

Andrey S in Go-go!
Aikidos
Параметры на уровне железа?
как параметры между функциями передаются в go?
источник

мн

мистер никитос in Go-go!
Andrey S
Иногда такие дискуссии возникают типа "меня не волнует как но дайте мне переменные пераметры!". А никто не задумывался как это должно быть реализовано на уровне железа?
Ну это уже дело реализаторов сделать так, чтобы работало или чтобы было вообще.
источник

мн

мистер никитос in Go-go!
Andrey S
как параметры между функциями передаются в go?
По значению) В общем случае
источник

AS

Andrey S in Go-go!
мистер никитос
По значению) В общем случае
через стек
источник

мн

мистер никитос in Go-go!
Или ты про уровень машинного кода сгенерированного?
источник

AS

Andrey S in Go-go!
плюс туда как правильно заметили копируется значение
источник

AS

Andrey S in Go-go!
и как вызываемая функция может определить что за параметры ей передали не имея понятия об их структуре?
источник

A

Aikidos in Go-go!
мистер никитос
В таком случае именованные параметры тогда как альтернатива
Не знаю почему именованные не добавили. В раст тоже не завезли, там есть вечные дебаты по этому вопросу и тема на форуме, которой уже 4 года (до сих пор спорят). Так что, всё не просто)
источник

мн

мистер никитос in Go-go!
С момента про стек я потерял нить твоей мысли 😂
источник

A

Aikidos in Go-go!
Andrey S
и как вызываемая функция может определить что за параметры ей передали не имея понятия об их структуре?
Давайте распутаем это.
Что вы понимаете под переменными параметрами в данный момент? Речь всё ещё идёт о:

f(x, y = 1)  -> x + y?

Чтобы можно было передать только x, а y сам подставился как 1, если его не указали?
Это же легко делается. При выполнении, в стек, вместе с вашим x  кидается 1, если вы не указали другое, и дальше вызывается функция.

Ок, можно спросить, а что, если у нас тип для y сложный? К примеру, какой-нибудь User { Id, Name }? Как тогда это будет компилироваться? Поэтому в языках с дефолтными параметрами есть ограничение, что указанное дефолтное значение должно удовлетворять условию: может быть вычислено при компиляции.

Другой вопрос, что всё это не имеет смысла, без именованных параметров. Иначе вы рискуете запутаться в собственном коде. Что обязательное, а что нет.

Или вы о другом? Или вы о ...T?
источник

AS

Andrey S in Go-go!
Aikidos
Давайте распутаем это.
Что вы понимаете под переменными параметрами в данный момент? Речь всё ещё идёт о:

f(x, y = 1)  -> x + y?

Чтобы можно было передать только x, а y сам подставился как 1, если его не указали?
Это же легко делается. При выполнении, в стек, вместе с вашим x  кидается 1, если вы не указали другое, и дальше вызывается функция.

Ок, можно спросить, а что, если у нас тип для y сложный? К примеру, какой-нибудь User { Id, Name }? Как тогда это будет компилироваться? Поэтому в языках с дефолтными параметрами есть ограничение, что указанное дефолтное значение должно удовлетворять условию: может быть вычислено при компиляции.

Другой вопрос, что всё это не имеет смысла, без именованных параметров. Иначе вы рискуете запутаться в собственном коде. Что обязательное, а что нет.

Или вы о другом? Или вы о ...T?
Это называется дефолтными параметрами
источник

A

Aikidos in Go-go!
Andrey S
Это называется дефолтными параметрами
Тогда о каких типах параметров вы говорите?
источник