1. ну можно передавать какой-нибудь тип данных где нулевое значение это nil? 2. И, вероятно, можно этот кейс переделать в "передавать bool вместо нил" и внутри уже сделать проверку на false для дефолтного значения аргумента 3. Не делать функции с дефолтными аргументами т.к го как раз (мне кажется) сделан для более явного указания того что нужно делать, чтобы проще было читать код всем, а не помнить про дефолтное значение