Я иду от фона Node.js, и типичный образец должен иметь функцию, которая принимает объект опции из, то есть объект, где вы устанавливаете свойства для дополнительных параметров, таких как:Как предоставить дополнительные параметры в Go?
foo({
bar: 23,
baz: 42
});
Это «эквивалент» JavaScript для необязательных и именованных параметров.
Теперь я узнал, что в Go нет дополнительных параметров, кроме переменных параметров, но у них нет читаемости именованных параметров. Таким образом, обычная картина, похоже, заключается в передаче структуры.
OTOH struct не может быть определена с использованием значений по умолчанию, поэтому мне нужна функция для настройки структуры.
Так что я в конечном итоге с:
- вызова функции, которая создает структура и затем заполняет его значениями по умолчанию.
- Замените значения, которые я хотел бы изменить.
- Вызовите функцию, которую я действительно хочу вызвать и передать структуру.
Это довольно сложный и длительный по сравнению с решением JavaScript.
Действительно ли это идиоматический способ иметь дело с необязательными и именованными параметрами в Go, или есть более простая версия?
Возможно, вам будет проще показать путь 'Go', если вы представили пример, демонстрирующий проблему, с которой вы сталкиваетесь. – sberry
http://dave.cheney.net/2014/10/17/functional-options-for-friendly-apis Дает большое представление об этой теме –