golang跳转语句goto,break,continue的使用及区别说明
作者:誠寜 发布时间:2024-04-23 09:39:56
标签:golang,goto,break,continue
goto
goto语句可以无条件地转移到过程中指定的行。
通常与条件语句配合使用。可用来实现条件转移, 构成循环,跳出循环体等功能。
在结构化程序设计中一般不主张使用goto语句, 以免造成程序流程的混乱
goto对应(标签)既可以定义在for循环前面,也可以定义在for循环后面,当跳转到标签地方时,继续执行标签下面的代码。
func main() {
// 放在for前面,此例会一直循环下去
Loop:
fmt.Println("test")
for a:=0;a<5;a++{
fmt.Println(a)
if a>3{
goto Loop
}
}
}
func main() {
for a:=0;a<5;a++{
fmt.Println(a)
if a>3{
goto Loop
}
}
Loop: //放在for后边
fmt.Println("test")
}
break
func main() {
Loop:
for j:=0;j<3;j++{
fmt.Println(j)
for a:=0;a<5;a++{
fmt.Println(a)
if a>3{
break Loop
}
}
}
}
//在没有使用loop标签的时候break只是跳出了第一层for循环
//使用标签后跳出到指定的标签,break只能跳出到之前,如果将Loop标签放在后边则会报错
//break标签只能用于for循环,跳出后不再执行标签对应的for循环
continue
continue和标签的使用类似于break,这里不再详述
总结
goto语句本身就是做跳转用的,而break和continue是配合for使用的。所以goto的使用不限于for,通常与条件语句配合使用
在for循环中break和continue可以配合标签使用。
补充:golang 实现Location跳转
golang作为互联网时代的C语言,对网络的支持是非常友好的,最近想做个短网址转发使用,自然想到用Golang开发。
闲话少说,直接上源码:
package main
import (
"fmt"
"log"
"net/http"
)
func login(w http.ResponseWriter, r *http.Request) {
fmt.Print(fmt.Sprintf("%v+", r))
w.Header().Set("Cache-Control", "must-revalidate, no-store")
w.Header().Set("Content-Type", " text/html;charset=UTF-8")
w.Header().Set("Location", "http://wap.baidu.com/")//跳转地址设置
w.WriteHeader(307)//关键在这里!
}
func main() {
http.HandleFunc("/", login) //设置访问的路由
err := http.ListenAndServe(":9090", nil) //设置监听的端口
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持asp之家。如有错误或未考虑完全的地方,望不吝赐教。
来源:https://blog.csdn.net/mofiu/article/details/77318376


猜你喜欢
- 一、效果展示在介绍代码之前,先来看下本文的实现效果。可以参考下面步骤把Python文件转化成exe,发给未安装Python的他/她。Pins
- 一、pandas分组1、分组运算过程:split->apply->combine拆分:进行分组的根据应用:每个分组运行的计算规则
- 最近设计一个优惠券列表,有个属性是有效日期,因为空间有限,必须要把开始日期和结束日期在一行显示,这样就出现一排的数字,日期有好几种我们习惯的
- 目录类空指向ES6 箭头函数vuetifyvue-cli异步和同步运行和部署TIPS排名不分先后最近好像都是只发了一些生活类,吐槽的一些 b
- 前言标准的 Bloom Filter 是一种比较简单的数据结构,只支持插入和查找两种操作。在所要表达的集合是静态集合的时候,标准 Bloom
- 问题今天在写项目功能的时候,有一个统计金额的情况,然后需要进行单位转换,所以写下了大概如下功能的语句,但得到的数据为小数点后4位精度,正常我
- 大家觉得在接手遗留代码时,见到什么东东是最让人感到不耐烦的?复杂无比的 UML ?我觉得不是。我的答案是,超过两个 else 的 if ,或
- 您想更改网站博客页面上 WordPress 文章的顺序吗?那么您就在正确的地方学习此功能并更改文章的顺序。因此,在本文中,我将向您展示如何通
- 在向表中插入数据的时候,经常遇到这样的情况:1、首先判断数据是否存在;2、如果不存在,则插入;3、如果存在,则更新。 在 SQL
- 目录1 、一般同步下载2、 使用流式请求,requests.get方法的stream3 、异步下载文件4、 异步拆分下载文件5、注意1 、一
- Python函数的定义定义函数,也就是创建一个函数,可以理解为创建一个具有某些用途的工具。定义函数需要用 def 关键字实现,具体的语法格式
- 1.问题如果我想获取一个目录下的所有文件列表,使用 Golang 该如何实现呢?比如有个目录 dir 结构如下:tree dirdir├──
- 最近项目中需要实现两组图片对比,并能将两者的区别标识出来。在网上搜索一大堆找到一篇大神的文章,最终实现该功能,在这里记录下:想要实现此dem
- 创建随机数 ①自JavaScript产生后,好多浏览器中都有内置的随机数发生方法。例如: var number = Math.random(
- 安装wxpypip install -U wxpy登录微信# 导入模块from wxpy import *# 初始化机器人,扫码登陆bot
- python 3.x 环境下,使用h5py加载HDF5文件,查看keys,如下:>>> import h5py>&g
- 在这里输入命令:操作命令:1.更新Anaconda:conda update conda更新所有包conda update --all3.添
- 在知乎上遇到一个问题,说:计算机中的「null」怎么读?null正确的发音是/n^l/,有点类似四声‘纳儿&rs
- 在说到什么是回表查询的时候,有两个概念需要先解释清楚:分别是聚集索引(聚簇索引)和非聚集索引(非聚簇索引)聚集索引和非聚集索引MySQL规定
- 我写的这个程序import tensorflow as tfsess=tf.InteractiveSession()x=tf.Variabl