为什么C语言中的go to 语句老师说要小心使用?注意的地方是什么?

Python034

为什么C语言中的go to 语句老师说要小心使用?注意的地方是什么?,第1张

goto语句称为无条件转移语句,通常与条件语句配合使用。可用来实现条件转移, 构成循环,跳出循环体等功能。但是,在结构化程序设计中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。而且,goto语句一般可以用其他语句来代替。

当然,goto语句也有其优势,例如可以用goto语句一次性跳出多重循环,而不需要使用多个break语句一步一步地跳出,从而使代码更为简洁。

在C语言中使用goto语句的注意事项如下:

使用goto语句只能转移到到同一函数内,而不能从一个函数里转移到另外一个函数里。

使用goto语句在同一函数内进行转移时,转移的起点应是函数内一段小功能的结束处,goto的目的label处应是函数内另外一段小功能的开始处。

不能从一段复杂的执行状态中的位置goto到另外一个位置,比如,从多重嵌套的循环判断中跳出去就是不允许的。

应该避免向两个方向跳转。这样最容易导致“面条代码”。

所以说,goto语句要小心使用。

beego的方法是:

this.Redirect("url", 301) 就可以了;

原生的方法是:

w.Header().Set("Location", "url") w.WriteHeader(301)

这样就好了。