Go语言学习(五)| 控制结构
时间:2022-07-22
本文章向大家介绍Go语言学习(五)| 控制结构,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Go 对于值之间的比较有非常严格的限制,只有两个类型相同的值才可以进行比较,如果值的类型是接口,它们也必须都实现了相同的接口
for循环(没有do或者while)switch和ifselect 类型选择和多路通讯转接器
条件控制
if / else if
Go 的 if 还有个强大的地方就是条件判断语句里面允许声明一个变量,这个变量的作用域只能在该条件逻辑块内,其他地方就不起作用了,如下所示:
// 计算获取值x,然后根据x返回的大小,判断是否大于10。
if x := computedValue(); x > 10 {
fmt.Println("x is greater than 10")
} else {
fmt.Println("x is less than 10")
}
//这个地方如果这样调用就编译出错了,因为 x 是条件里面的变量
fmt.Println(x)
使用 else if
时必须要注意中间的空格
switch
package main
func main() {
i := 1
switch i {
case 1:
println(1)
fallthrough
case 2:
println(2)
default:
println(0)
}
}
注意
默认每个 case
后都带有 break
,匹配成功后不会自动向下执行其他 case 。fallthrough
关键字用来强制执行下一个 case 的值,如果 fallthrough
关键字后面显式的写 break
关键字会报错
例2:
package main
func main() {
i := 1
switch i {
case 1, 2:
println(i)
default:
println(0)
}
}
goto
用 goto 跳转到一定是当前函数内定义的标签。标签名大小写敏感。
package main
import "fmt"
func main() {
demo()
}
func demo() {
i := 0
Here:
fmt.Println(i)
i++
if i < 5 {
goto Here
}
}
循环
循环语句是用来重复执行某一段代码。
for 循环
for的三种形式
//与 PHP 的 for 一样
for init; condition; post {}
//和 while 一样
for condition {}
//和 PHP 的 while(true) 一样(死循环)
for {}
continue
语句用来跳出 for 循环中当前循环。在 continue 语句后的所有的 for 循环语句都不会在本次循环中执行。循环体会在一下次循环中继续执行。嵌套循环时,可以再 break
后面指定标签。用标签决定那个循环被终止。但是如果标签定义了就一定要使用
package main
func main() {
J:
for j := 0; j < 5; j++ {
for i := 0; i < 10; i++ {
if i > 5 {
break J //直接退出最外层循环J
}
println(i)
}
}
}
range 循环
range 可用于 slice
、 array
、 string
、 map
和 channel
。当对 slice
或者 array
做循环时, range
返回序号作为键,这个序号对应的内容作为值。
package main
import "fmt"
func main() {
str := "I love 中国"
for k, v := range str {
fmt.Printf("%d %sn", k, v)
}
}
例2:
package main
import "fmt"
func main() {
arr := [...]string{"a", "b", "c", "d"}
for _, val := range arr { //这个如果下面不想用到数组的序号,则要用 '_'
fmt.Printf("%s", val)
}
fmt.Printf("n")
}
也可以在字符串上直接使用 range 。
例:
package main
import "fmt"
func main() {
list := []string{"a", "b", "c", "d"}
for k, v := range list {
fmt.Printf("%d %sn", k, v)
}
fmt.Println("-----------------")
list1 := "e例f"
for pos, char := range list1 {
fmt.Printf("%d %cn", pos, char)
}
}
注意输出结果:
0 a
1 b
2 c
3 d
-----------------
0 e
1 例 //注意:“例” 这个字占了3个字节,所以下面的序号变为了4
4 f
- 使用ASP.NET MVC2+PDF.NET 构建一个简单的新闻管理程序 示例过程
- 【开源】QuickPager ASP.NET2.0分页控件V2.0.0.3 【增加了使用说明】
- Android中Java和JavaScript交互
- Android UI控件系列:TabWidget(切换卡)
- 在Linux系统运行WinForm程序
- 将ZIP文件添加到程序集资源文件然后在运行时解压文件
- Android中App安装位置详解
- Java面试题系列之基础部分(二)——每天学5个问题
- Java面试题系列之基础部分(四)——每天学5个问题
- 使用ORM框架,必须迁就数据库的设计吗?
- 使用OQL+SQLMAP解决ORM多表复杂的查询问题
- PostgreSQL的.NET驱动程序Npgsql中参数对象的一个Bug
- 和Emoji相关的那些开源项目
- PostgreSQL的PDF.NET驱动程序构建过程
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Ubuntu添加swap分区的方法
- linux文件目录管理命令整理总结
- C++核心准则SF.8:为所有的.h文件使用包含监护
- 利用logsave如何将命令输出保存起来
- CentOs下安装gcc/g++/gdb的方法
- 详解firewall的规则设置与命令(白名单设置)
- 二叉树:构造一棵最大的二叉树
- Ubuntu16.04 ext4格式硬盘挂载普通用户权限控制的操作方法
- Apache Spark 2.0 在作业完成时却花费很长时间结束
- centos 6.9 升级glibc动态库的详细过程
- Ubuntu18.04(linux)安装MySQL的方法步骤
- ubuntu18.0.4安装mysql并解决ERROR 1698 (28000): Access denied for user ''root''@''localhost''
- 动态在线扩容root根分区大小的方法详解
- centos7使用rpm安装mysql5.7的教程图解
- 关于Linux命令行下的数学运算示例详解