in reply to Would you use 'goto' here?

In this case the performance gained from using the goto instead of a more conventional subroutine call is probably outweighed by the maintenance risk. Somebody is liable to pick this up and not understand it, and then either undo the trick or add a layer of bandaids on top of it. I'd go with
return edit_office_product(@_) if $query->param('officeID');