golang跳转语句goto,break,continue的使用及区别说明

 更新时间:2020年12月15日 10:46:39   作者:誠寜  
这篇文章主要介绍了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)
 }
} 

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

相关文章

  • 重学Go语言之如何使用Redis

    重学Go语言之如何使用Redis

    Redis是我们开发应用程序中很常用的NoSQL数据库,那么在Go语言中要如何连接和操作Redis呢,在这篇文章中,我们就来一起来探究一下吧
    2023-08-08
  • 基于Golang实现Excel表格的导入导出功能

    基于Golang实现Excel表格的导入导出功能

    最近项目开发中有涉及到Excel的导入与导出功能,特别是导出表格时需要特定的格式,所以本文给大家介绍了基于Golang实现Excel表格的导入导出功能,文中通过代码示例和图文介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • Golang 中的 unsafe.Pointer 和 uintptr详解

    Golang 中的 unsafe.Pointer 和 uintptr详解

    这篇文章主要介绍了Golang中的unsafe.Pointer和uintptr详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-08-08
  • Go语言常见哈希函数的使用

    Go语言常见哈希函数的使用

    哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。具体的介绍网上有很详细的描述,如闲聊哈希表 ,这里就不再累述了;
    2015-03-03
  • go语言入门环境搭建及GoLand安装教程详解

    go语言入门环境搭建及GoLand安装教程详解

    这篇文章主要介绍了go语言入门环境搭建及GoLand安装教程详解,需要的朋友可以参考下
    2020-12-12
  • Golang嵌入资源文件实现步骤详解

    Golang嵌入资源文件实现步骤详解

    在应用程序中附带代码以外的其他资源可能会很有用,常用的实现方法是嵌入对象或数据。在数据库中存储数据应用中,需要定义schema,在应用启动时创建表,但如果找不到schema文件呢?Go1.16提供embed包让实现变得简单,之前很多第三方包实现类似功能
    2023-01-01
  • golang中连接mysql数据库

    golang中连接mysql数据库

    这篇文章主要介绍了golang中连接mysql数据库的步骤,帮助大家更好的理解和学习go语言,感兴趣的朋友可以了解下
    2020-12-12
  • MacOS中 VSCode 安装 GO 插件失败问题的快速解决方法

    MacOS中 VSCode 安装 GO 插件失败问题的快速解决方法

    这篇文章主要介绍了MacOS中 VSCode 安装 GO 插件失败问题的快速解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • Go-Web框架中AOP方案的实现方式

    Go-Web框架中AOP方案的实现方式

    本文主要介绍了Go-Web框架中AOP方案的实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • GoLang RabbitMQ TTL与死信队列以及延迟队列详细讲解

    GoLang RabbitMQ TTL与死信队列以及延迟队列详细讲解

    这篇文章主要介绍了GoLang RabbitMQ TTL与死信队列以及延迟队列,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-12-12

最新评论