博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
条件语句和循环语句--就要学习Go系列
阅读量:2289 次
发布时间:2019-05-09

本文共 2109 字,大约阅读时间需要 7 分钟。

原创文章,若需转载请注明出处!

欢迎扫码关注公众号「Golang来了」或者移步 ,查看更多精彩文章。

前言

今天,我们来看下条件语句和循环语句,学起来!

条件语句

if语句

//ifif a%2 == 0 {
println("偶数")}//if elseif a%2 == 0 {
println("偶数")}else {
println("奇数")}//多分支if a > 0 {
println("大于零")}else if a == 0 {
println("等于零")}else {
println("小于零")}

在 if 或 else if 语句中嵌入一个或多个 if 或 else if 语句,形如

if a > 0 {
if x {
//... }else {
//... }}else {
//...}

注意:if 语句没有圆括号,但是必须要有花括号

switch

switch i {
case 0: fmt.Printf("zero") case 1: fmt.Printf("one") case 2: fallthrough case 3: fmt.Printf("three") case 4, 5, 6: fmt.Printf("four, five, six") default: fmt.Printf("Default") }

不知道大家有没有注意到,switch语句是没有break的,而且还可以case多个值。这里大家会有个疑惑,当i==2时,会输出什么,答案是:three。因为如果在case中明确添加 fallthrough 关键字,才会继续执行紧跟的下一个case。

注意到一个比较有意思的地方,switch后面的表达式并不是必须的:

switch {
case 0 <= Num && Num <= 3: fmt.Printf("0-3") case 4 <= Num && Num <= 6: fmt.Printf("4-6") case 7 <= Num && Num <= 9: fmt.Printf("7-9") default: fmt.Printf(">9") }

看了上面代码,其实这段代码逻辑与使用if-else结构等同。

select大家可以暂且不用管,到后面我会单独写一篇文章介绍的。

循环语句

for语句

for语句的三种格式

//1、经典的for循环for i:=0;i<10 ;i++  {
fmt.Printf("%d\n",i)}//2、简洁的for循环i := 1for i < 10 {
fmt.Printf("%d\n",i) i++}//3、死循环的for语句i := 1for {
if i>5 {
break } fmt.Printf("%d\n",i) i++}

另一种用法:for 循环的 range 格式可以对 slice、map、数组、字符串等进行迭代循环。

numbers := [6]int{
1, 2, 3, 4}for i, x := range numbers {
fmt.Printf("第 %d 位 x 的值 = %d\n", i, x)}

不难想到,上面这段代码的输出:

第 0 位 x 的值 = 1第 1 位 x 的值 = 2第 2 位 x 的值 = 3第 3 位 x 的值 = 4第 4 位 x 的值 = 0第 5 位 x 的值 = 0

注意:go语言中没有while语句

有循环语句,那就必定要提提循环控制语句:continue、breakgoto
其中,continuebreak和其他语言的中的用法类似,这里给出一个goto的使用例子。但是,在实际编写结构化程序的时候,一般都不主张使用goto语句,不然会给代码Review和调试程序造成困难。

/* 定义局部变量 */	var a int = 10	/* 循环 */	LOOP: for a < 20 {
if a == 15 {
/* 跳过迭代 */ a = a + 1 goto LOOP } fmt.Printf("a的值为 : %d\n", a) a++ }

输出:

a的值为 : 10a的值为 : 11a的值为 : 12a的值为 : 13a的值为 : 14a的值为 : 16a的值为 : 17a的值为 : 18a的值为 : 19

看到这里,对于Go的运算符、条件语句和循环语句有了大概的了解。从其他语言转学Go的同学,可以比较下这部分语法跟你之前掌握的语言的异同。比如之前掌握Java、PHP或者C,就可以对比下这部分,这样对比学习可以加深对知识的理解,能够更快掌握。不管之前有没有开发语言的基础,学习一门新语言的重点还是自己要多多练习。

(全文完)

扫描上方二维码,欢迎关注公众号「Golang来了」,获取最新精彩文章!

你可能感兴趣的文章
CPU-bound(计算密集型) 和I/O bound(I/O密集型)
查看>>
美国生活小常识
查看>>
从美国回国探亲可带礼品大汇总
查看>>
比较全面的航空公司行李规定以及行李问题咨询
查看>>
基于AWS的自动化部署实践
查看>>
同时使用ColorKey以及顶点Alpha效果
查看>>
Cisco SIP支持的标准
查看>>
走向 Linux 2.6
查看>>
VOIP术语详解
查看>>
p2p语音通信和一般voip通信质量比较
查看>>
VOIP术语总结
查看>>
SIP压力测试/DOS攻击利器
查看>>
Makefile文件里的shell语法
查看>>
Hadoop学习笔记一 简要介绍
查看>>
MySQL存储引擎选择和比较
查看>>
查看MYSQL表占用空间状态
查看>>
动态库路径配置- /etc/ld.so.conf文件
查看>>
实例讲一讲美国鞋码宽度
查看>>
磁盘空间满故障排除
查看>>
理解MySQL数据类型 避免数据库设计出现混乱
查看>>