Go Web编程实战(2)----流程控制语句(一)

简介: Go Web编程实战(2)----流程控制语句(一)

流程控制语句


每个语言都会介绍到流程控制语句,Go语言同样具有这些。比如分支结构if-else、for循环、for-range循环、switch-case语句、goto语句、break语句以及continue语句。下面,博主来分别举例介绍使用方式。


if-else语句

基本来说,Go语言的if-else语句与Java语言基本一样。比如,我们这里根据值的大小,选择输出,代码如下所示:

func main() {
  var b int=9
  if b>9{
  fmt.Println("大于")
  }else if(b==9){
  fmt.Println("等于")
  }else{
  fmt.Println("小于")
  }
}


for循环语句

与其他语言不同,Go语言只有for循环,没有while和do-while循环。而且其使用方法与C语言非常接近。下面,我们循环输出1-100个数,代码如下所示:

var i int
for i=0;i<=100 ;i++  {
  fmt.Println(i)
}


用for循环实现do-while

当然,如果想使用其他语言的do-while语句,我们可以将for循环写成这样:

var i int=0
for{
  i++
  if i>50{
  break
  }
}


用for循环实现while

同样的,我们也可以将for循环实现while循环的效果,代码如下所示:

i :=0
for i<=10{
  fmt.Println(i)
  i++
}


break指定跳出循环

学过C语言的,应该也知道Go语言可以直接goto跳到指定代码。而for循环里面,我们也可以通过break语句直接决定终止哪个循环。比如:

var i,j int
JumpLoop1:
  for i=1;i<100;i++{
  JumpLoop2:
    for j=0;j<i;j++{
    fmt.Println(j)
    if i>10{
      break JumpLoop1
    }else{
      break JumpLoop2
    }
    }
  }


感兴趣的可以删除else分别测试一下,看看最终效果。不过一般来说,如果不指定JumpLoop1,默认最内部的break只会跳出最内部的for循环。


continue语句

和其他语言一样,我们有时候也只需要跳出本次循环,所以Go语言同样给我们提供了continue语句。当然,continue语句后面同样可以跟标签,比如不跳出最内层的本次循环,而跳出最外层的本次循环,可以这样写:

var i, j int
JumpTag:
  for i = 1; i < 100; i++ {
  for j = 0; j < i; j++ {
    fmt.Println(j)
    if i > 10 {
    continue JumpTag
    }
  }
  }


本段代码执行,到i=10,j=9之后,只会输出0。因为i>10时,循环都在j=0输出一次之后,跳出了最外层的循环,故不会有其他值。

相关文章
|
1月前
|
存储 人工智能 Go
Go-Zero全流程实战即时通讯
Go-Zero 是一个功能丰富的微服务框架,适用于开发高性能的即时通讯应用。它具备中间件、工具库和代码生成器,简化开发流程。本文介绍其环境搭建、项目初始化及即时通讯功能实现,涵盖用户认证、消息收发和实时推送,帮助开发者快速上手。
164 0
|
1月前
|
数据采集 Go API
Go语言实战案例:多协程并发下载网页内容
本文是《Go语言100个实战案例 · 网络与并发篇》第6篇,讲解如何使用 Goroutine 和 Channel 实现多协程并发抓取网页内容,提升网络请求效率。通过实战掌握高并发编程技巧,构建爬虫、内容聚合器等工具,涵盖 WaitGroup、超时控制、错误处理等核心知识点。
|
1月前
|
Go 开发者
Go语言实战案例:使用select监听多个channel
本文为《Go语言100个实战案例 · 网络与并发篇》第5篇,详解Go并发核心工具`select`的使用。通过实际案例讲解如何监听多个Channel、实现多任务处理、超时控制和非阻塞通信,帮助开发者掌握Go并发编程中的多路异步事件处理技巧。
|
1月前
|
数据采集 编解码 监控
Go语言实战案例:使用channel实现生产者消费者模型
本文是「Go语言100个实战案例 · 网络与并发篇」第4篇,通过实战案例详解使用 Channel 实现生产者-消费者模型,涵盖并发控制、任务调度及Go语言并发哲学,助你掌握优雅的并发编程技巧。
|
1月前
|
数据采集 消息中间件 编解码
Go语言实战案例:使用 Goroutine 并发打印
本文通过简单案例讲解 Go 语言核心并发模型 Goroutine,涵盖协程启动、输出控制、主程序退出机制,并结合 sync.WaitGroup 实现并发任务同步,帮助理解 Go 并发设计思想与实际应用。
|
1月前
|
数据采集 JSON Go
Go语言实战案例:实现HTTP客户端请求并解析响应
本文是 Go 网络与并发实战系列的第 2 篇,详细介绍如何使用 Go 构建 HTTP 客户端,涵盖请求发送、响应解析、错误处理、Header 与 Body 提取等流程,并通过实战代码演示如何并发请求多个 URL,适合希望掌握 Go 网络编程基础的开发者。
|
2月前
|
JSON 前端开发 Go
Go语言实战:创建一个简单的 HTTP 服务器
本篇是《Go语言101实战》系列之一,讲解如何使用Go构建基础HTTP服务器。涵盖Go语言并发优势、HTTP服务搭建、路由处理、日志记录及测试方法,助你掌握高性能Web服务开发核心技能。
|
2月前
|
存储 算法 数据可视化
Go语言实战:图的邻接表表示法实现详解
本文是《Go语言100个实战案例》系列之一,讲解图的邻接表表示法及其在Go语言中的实现。适用于稀疏图,节省空间,适合初学者与进阶开发者学习图结构在工程中的应用。
|
2月前
|
机器学习/深度学习 存储 算法
Go语言实战案例-广度优先遍历BFS
广度优先遍历(BFS)是一种层级展开的搜索策略,常用于树与图的遍历、最短路径查找、二维数组中的感染扩散等问题。它借助队列实现,优先访问当前层所有节点,再进入下一层,适用于寻找最短路径、层序遍历、岛屿问题等场景。
|
2月前
|
算法 Go C++
Go语言实战案例-深度优先遍历DFS
深度优先遍历(DFS)是一种用于遍历图和树结构的重要算法,其核心思想是“一条路走到底”,即沿着每个分支尽可能深入,直到无法继续再回溯。在树中,DFS包括前序、中序和后序三种遍历方式;在图中,DFS可用于寻找路径、计算连通分量、拓扑排序等。该算法通常通过递归或栈实现,适用于解决岛屿数量、迷宫路径、括号生成等经典问题。本文还对比了DFS与BFS的区别,并介绍了其在不同场景下的应用与实现方法。