А вообще тут бы хорошо понимать, что хоть ваш исходный код и избыточен, однако он позволяет конкретизировать ошибку.
То есть по сути у вас есть три кейса:
— переменная не задана
— заданное значение не является числом
— заданное значение не является валидным номером порта
И под всё под это лучше завести отдельные ошибки, чтоб потом точно понимать, что пошло не так, когда программа упадёт.
Это может выглядеть, как-то так:
https://play.golang.org/p/Gj1OCuBdo_x@Romshark спасибо, натолкнул на мысль, разложить по полочкам)