首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
函数参数与返回值
传递变长参数
defer 和追踪
内置函数
递归函数
将函数作为参数
闭包
应用闭包:将函数作为返回值
使用闭包调试
计算函数执行时间
通过内存缓存来提升性能
声明和初始化
切片
For-range 结构
切片重组(reslice)
切片的复制与追加
字符串、数组和切片的应用
声明、初始化和 make
测试键值对是否存在及删除元素
for-range 的配套用法
map 类型的切片
map 的排序
将 map 的键值对调
标准库概述
regexp 包
锁和 sync 包
精密计算和 big 包
自定义包和可见性
为自定义包使用 godoc
使用 go install 安装自定义包
自定义包的目录结构、go install 和 go test
通过 Git 打包和安装
Go 的外部包和项目
在 Go 程序中使用外部库
结构体定义
使用工厂方法创建结构体实例
使用自定义包中的结构体
带标签的结构体
匿名字段和内嵌结构体
方法
类型的 String() 方法和格式化描述符
垃圾回收和 SetFinalizer
当前位置:
首页>>
技术小册>>
go编程权威指南(二)
小册名称:go编程权威指南(二)
**for 循环** 与其他编程语言类似,Shell支持for循环。 for循环一般格式为: ```bash for var in item1 item2 ... itemN do command1 command2 ... commandN done ``` ------------ 当变量值在列表里,for 循环即执行一次所有命令,使用变量名获取列表中的当前取值。命令可为任何有效的 shell 命令和语句。in 列表可以包含替换、字符串和文件名。 in列表是可选的,如果不用它,for循环使用命令行的位置参数。 例如,顺序输出当前列表中的数字: ```bash for loop in 1 2 3 4 5 do echo "The value is: $loop" done ``` ------------ 顺序输出字符串中的字符: ```bash #!/bin/bash for str in This is a string do echo $str done ``` ------------ **while 语句** while 循环用于不断执行一系列命令,也用于从输入文件中读取数据。其语法格式为: ```bash while condition do command done ``` 以下是一个基本的 while 循环,测试条件是:如果 int 小于等于 5,那么条件返回真。int 从 1 开始,每次循环处理时,int 加 1。运行上述脚本,返回数字 1 到 5,然后终止。 ```bash #!/bin/bash int=1 while(( $int<=5 )) do echo $int let "int++" done ``` 以上示例使用了 Bash let 命令,它用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量 ------------ while循环可用于读取键盘信息。下面的实例中,输入信息被设置为变量FILM,按<Ctrl-D>结束循环。 ```bash echo '按下 <CTRL-D> 退出' echo -n '输入你最喜欢的网站名: ' while read FILM do echo "是的!$FILM 是一个好网站" done ``` ------------ **无限循环** 无限循环语法格式: ```bash while : do command done ``` 或者 ```bash while true do command done ``` ------------ **case ... esac** **case ... esac** 为多选择语句,与其他语言中的 switch ... case 语句类似,是一种多分枝选择结构,每个 case 分支用右圆括号开始,用两个分号 ;; 表示 break,即执行结束,跳出整个 case ... esac 语句,esac(就是 case 反过来)作为结束标记。 可以用 case 语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。 **case ... esac** 语法格式如下: ```bash case 值 in 模式1) command1 command2 ... commandN ;; 模式2) command1 command2 ... commandN ;; esac ``` ------------ case 工作方式如上所示,取值后面必须为单词 in,每一模式必须以右括号结束。取值可以为变量或常数,匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。 取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。 下面的脚本提示输入 1 到 4,与每一种模式进行匹配: ```bash echo '输入 1 到 4 之间的数字:' echo '你输入的数字为:' read aNum case $aNum in 1) echo '你选择了 1' ;; 2) echo '你选择了 2' ;; 3) echo '你选择了 3' ;; 4) echo '你选择了 4' ;; *) echo '你没有输入 1 到 4 之间的数字' ;; esac ``` ------------ **跳出循环** 在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,Shell使用两个命令来实现该功能:break和continue。 **break命令** break命令允许跳出所有循环(终止执行后面的所有循环)。 下面的实例中,脚本进入死循环直至用户输入数字大于5。要跳出这个循环,返回到shell提示符下,需要使用break命令 ```bash #!/bin/bash while : do echo -n "输入 1 到 5 之间的数字:" read aNum case $aNum in 1|2|3|4|5) echo "你输入的数字为 $aNum!" ;; *) echo "你输入的数字不是 1 到 5 之间的! 游戏结束" break ;; esac done ``` ------------ **continue** continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。 对上面的实例进行修改: ```bash #!/bin/bash while : do echo -n "输入 1 到 5 之间的数字: " read aNum case $aNum in 1|2|3|4|5) echo "你输入的数字为 $aNum!" ;; *) echo "你输入的数字不是 1 到 5 之间的!" continue echo "游戏结束" ;; esac done ```
上一篇:
shell编程-流程控制
下一篇:
shell编程-数组
该分类下的相关小册推荐:
Go Web编程(中)
深入浅出Go语言核心编程(三)
深入浅出Go语言核心编程(一)
深入浅出Go语言核心编程(五)
Go语言从入门到实战
Go开发基础入门
go编程权威指南(一)
深入浅出Go语言核心编程(二)
Go进阶之分布式爬虫实战
深入浅出Go语言核心编程(四)
深入浅出Go语言核心编程(七)
从零写一个基于go语言的Web框架