Go语言流程控制(4) | Go主题月

149 阅读3分钟

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语言的流程控制的讲解就到此为止。