sarah
sarah

Reputation: 247

Why am I getting a missing return at end of function in this code?

func getKeyNameFromDeploymentAndSubnet(subnetType SubnetType, deploymentType DeploymentType, keyNameMap map[SubnetType]string) string {
    if (deploymentType == NoDeployment || deploymentType == PDBAWindows || deploymentType == AgentDeployment) {
        return keyNameMap[subnetType]
    }
    else if (deploymentType == AnsibleDeployment) {
        return "bar"
    }
    return "foo"
}

In the first if statement, I get an error of missing return at end of function error. I don't get this error if I remove the else if statement. Where am I going wrong?

Upvotes: 0

Views: 3033

Answers (2)

Hendrik Evert
Hendrik Evert

Reputation: 350

Since you have a return statement in your first if, you may just drop the else statement. The second if is not going to be reached anyway if the first ones conditions are met.

func getKeyNameFromDeploymentAndSubnet(subnetType SubnetType, deploymentType DeploymentType, keyNameMap map[SubnetType]string) string {
    if (deploymentType == NoDeployment || deploymentType == PDBAWindows || deploymentType == AgentDeployment) {
        return keyNameMap[subnetType]
    }
    if (deploymentType == AnsibleDeployment) {
        return "bar"
    }
    return "foo"
}

Upvotes: 1

akond
akond

Reputation: 16035

You get this error because else statement must be on the same line as the closing } of the first condition.

func getKeyNameFromDeploymentAndSubnet(subnetType SubnetType, deploymentType DeploymentType, keyNameMap map[SubnetType]string) string {
    if deploymentType == NoDeployment || deploymentType == PDBAWindows || deploymentType == AgentDeployment {
        return keyNameMap[subnetType]
    } else if deploymentType == AnsibleDeployment {
        return "bar"
    }
    return "foo"
}

Upvotes: 3

Related Questions