That’s why the best solution here is to use Functional Options Pattern, as was suggested by @iignat . You can hide default options implementation from user but at the same time allow to configure those if needed. Pattern … in function definition means, that you can either pass those settings or not.