Go语言流程控制也展现了其简洁的精髓,语法相比其他语言也相对简单,但是与其变量和常量要讲的内容可能会多一点了,基础的东西还是需要多多了解一下,后面的东西内容会更多,因为关联到的语法知识会更多。
条件语句
Go语言的条件语句主要有if,switch, select
if条件语句
简单的if是日常开发中最常用的条件语句了 与PHP不同的是判断条件是不用加() 还有就是{}前面的{不能独占一行 例如:
const a = 1;
if a>3{
fmt.Println("a大于3");
}
还有一个就是if else:
const a = 1;
if a>3{
fmt.Println("a大于3");
}else{
fmt.Println("a不大于3");
}
switch
switch一般与case和default一起用 例如:
var s1 = 1;
switch s1 {
case 1:
fmt.Println("s1=1"); //只会在这里输出
case 2:
fmt.Println("s1=2");
default:
fmt.Println("s1啥也不是");
}
case 自带break,PHP在switch的时候语言每个case里面加defalt非常繁琐,如果要执行后面的case 可以用fallthrough关键字。如果case里面有fallthrough他会无条件执行下一个case里面的内容。不会管下个case条件是不是True。
switch的可以是任何类型但是要与case的类型相同,所以说不能用switch case同时判断一个变量是否是整数还是字
符串。
var s1 = 1
switch s1 {
case 1:
fmt.Println("s1=1"); //会在这里输出
fallthrough;
case 2:
fmt.Println("s1=2"); //也会在这里输出
default:
fmt.Println("s1啥也不是");
}
循环语句
for
跟其他的语言不一样,没有while True这种循环
for {
fmt.Println("hello");
}
这样就是死循环,省略了True,当然加个True也行
for True {
fmt.Println("hello");
}
for循环可以使用条件判断,限制条件用来跳出循环
for i=0;i<10;i++ {
fmt.Println(i);
}
select
select 这里就不仔细说,先埋好坑,等着我们讲到channel Go语言管道这里再说,select 能让程序线程在多个channel的操作上等待,goroutine(协程)和channel(管道)之间selecte起着很重要的作用,后面的这些东西才是Go语言的设计的魅力所在,Go语言并发思想才是Go语言的精髓。
break continue goto
break,continue,goto三个关键字。用来控制循环体内的执行流程,break和其他语言一样。跳出当前整个的for循环或者switch循环。 continue跳出当前的循环,进入下一轮循环。 goto这个东西在很多语言里面都是不提倡使用的,很容易造成执行混乱,在这里Go语言也一样不推荐使用,它的意思是跳到标记的地方执行代码。
要补充说明一下经常和 for一起使用的关键字range,range 跟Python一样的,用于遍历数组,切片,集合等数据结构中的元素。这些数据结构后面再详细说明,现在了解下最简单是使用方法遍历字符串:
for i,j :=range "go" {
fmt.Println(i,j); //i是下标,j是字符串的ascii码(Go语言特点,后面会用UTF8的包解析这个)
}
总结
今天这个文章的伏笔有点多,但是后面一定会讲清楚,因为基础的东西很枯燥,涉及到了一些高级的东西需要花很大篇幅来讲,今天Go语言的流程控制的讲解就到此为止。