Workflow failure retry handling using goto?

Is goto a good way to handle retry workflow failure, if a workflow should never be killed? Or would you like to recommend something else?

ctx = cWorkflow.WithActivityOptions(ctx, DefaultActivityOptions)
workflowManager, err := prepareWorkflowManager(ctx, workflowId)
if err != nil {
// todo: emit metric here

logger.Error(common.WorkflowErrorPrefix+"Failed to prepare workflow manager", zap.Error(err)) 
_ = cWorkflow.Sleep(ctx, 2*time.Hour)
 goto pointA:
logger.Info("Workflow Manager Prepared")

In the majority of cases you want to make sure that the workflow never fails due to intermittent failures. So retrying a workflow is only needed to guard against bugs in the workflow code that returns unexpected errors.

If you want to retry workflow then specify RetryOptions when starting it. So no need to have retry loops or gotos in the parent workflow.