为什么在此代码的函数结尾处缺少返回值?

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?

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"
}

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"
}