今天遇到了一段代码,类似下面

do {
    ...
} while(false)

开始很疑惑,为什么这样写,后来上网搜了一下才恍然大悟。这种语法是为了解决代码嵌套、实现goto的用途

下面是同样功能的三段代码

1、代码嵌套

if( A==true ) {
    if(B == true) {
        if(C == true) {
            if(D == true){
                //doSomething
            }
        }
    }
}

这样箭头形代码很丑,且可读性差

2、goto代码

if( A==false )  
    goto tag;  
if( B==false )  
    goto tag;  
if( C==false )  
    goto tag;  
if( D==false )  
    goto tag; 
//doSomething
tag: 

3、do{}while(false)

这样的结构能够创造可读性良好的代码,又可以避免goto可能产生的问题

do  
{  
    if( A==false )  
        break;  
    if( B==false )  
        break;  
    if( C==false )  
        break;  
    if( D==false )  
        break; 
    //doSomething
}while(false);