注意事项二
1)条件分支语句
switch语句---基于不同条件执行不同动作
select语句---类似于switch,区别在于select会随机执行一个可运行的case;如果没有case可运行,将阻塞,直到有case可运行;
2)循环控制语句
break语句---中断当前for循环或者跳出switch语句
continue语句---跳过当前循环剩余的语句,继续执行下一轮循环
goto语句---将控制转移到被标记的语句
3)特殊写法
if statement; condition{//statement在if中定义,就只能在if...else语句块中使用
//代码块
}
package main
import "fmt"
func main() {
if num:=10; num%2==0{
fmt.Println(num,"偶数")
}else {
fmt.Println(num,"奇数")
}
}
4)switch语句注意
switch var1{
case val1:
...
case val2:
...
default:
...
}
第一:Go语言中的switch默认给每个case自带break;
第二:可以添加fallthrough(贯穿)强制执行后面的case分支,且需放在case分支的最后一行;
第三:case后可以有多个值,之间使用逗号分隔,例如:case val1,val2,cal3;
5)类型转换—switch被用于type switch(类型转换)—判断interface变量中实际存储的变量类型;
switch x.(type){
case type:
statement(s)
case type:
statement(s)
default:
statement(s)
}
package main
import "fmt"
func main() {
var x interface{}
switch i:=x.(type) {
case nil:
fmt.Printf("x的类型 :%T",i)
case int:
fmt.Printf("x是int型")
case float64:
fmt.Printf("x是float64型")
case func(int) float64:
fmt.Printf("x是func(int)型")
case bool,string:
fmt.Printf("x是bool或string型")
default:
fmt.Printf("未知型")
}
}
6)for循环语句—Go没有while、do…while循环;
语法结构:
for 初始语句init; 条件表达式condition; 结束语句post {
//循环体代码
}
//注意---初始语句、条件表达式和结束语句3种组成部分是可选的---4种略不同的写法---分号必须写(全部省略时---可全部不写);
7)for循环的range格式对string、slice、array、map、channel等进行迭代循环;
array、slice、string返回索引和值;map返回键和值;channel只返回通道内的值
for key,value:=range oldMap{
newMap[key]=value
}
package main
import "fmt"
func main() {
str :="123ABCabc大帅哥"
for i,value:=range str{
fmt.Printf("第 %d 位的ASCII值=%d,字符是%c \n",i,value,value)//%c就是输出ASCII对应的字符
}
}
8)goto语句—无条件转移到程序指定的行;
//通常于条件语句搭配使用---实现条件转移、构成循环、跳出循环体等
LABEL: statement
goto LABEL
package main
import "fmt"
//goto跳转输出1~50的素数
func main() {
var C,c int
C=1
LOOP:
for C<50{
C++
for c=2;c<C;c++{
if C%c==0{
goto LOOP
}
}
fmt.Printf("%d \t",C)
}
}