if condition1 {代码块1}elseif condition2 {代码块2}............else{代码块3}
if之后的条件不需要添加小括号(官方不需要使用)
分支执行体必须使用{}括起来,否则语法错误
只能执行一个代码块,else部分不是必须的
if/elseif 中的condition必须是条件表达式,不能为赋值语句
/* * if-else控制语句&#xff1a; *请输入一个年龄&#xff0c;如果年龄大于18岁&#xff0c;可以进入风月场合&#xff1b;否则不让进入*/funcmain(){var age intfmt.Println("请输入年龄:")fmt.Scanln(&age)if age <18{fmt.Println("少儿不宜&#xff0c;滚犊子&#xff01;&#xff01;&#xff01;")}else{fmt.Println("大爷&#xff0c;您里面请")}}
fmt.Scanln用法参见&#xff1a;https://golang.org/pkg/fmt/
if-else的执行体必须使用{}括起来
funcmain(){var x int&#61;4if x >2{fmt.Printf("%d > 2\n", x)}else{fmt.Printf("%d <2\n", x)}}
case 之后是一个(多个)表达式&#xff08;常量、变量、有返回值的函数&#xff09;&#xff0c;witch同样如此
每一个case分支不需要break来结束
case后的表达式的值的数据类型必须和switch表达式数据类型保持一致
case之后的表达式如果为常量&#xff0c;则不能重复&#xff1a;
default语句不是必须的
funcdemo1(){var a int&#61;10switch a {case1,2,3:fmt.Println("1111111111111")case4,5,6:fmt.Println("22222222222222")case7,7:/*常量重复&#xff0c;无法编译通过*/fmt.Println("3333333333333")} }
switch之后可以不填写表达式&#xff0c;在case时再填写
funcdemo3(){var a int&#61;10switch{case a &#61;&#61;10:fmt.Println("1111111111111")case a &#61;&#61;20:fmt.Println("22222222222222")default:fmt.Println("3333333333333")} }
funcdemo7(){var x interface{}x &#61; demo6switch i :&#61; x.(type){casenil:fmt.Printf("x的类型为&#xff1a;%T\n", i)caseint,int8,int16,int32,int64:fmt.Printf("x的类型为&#xff1a;%T\n", i)casefloat32,float64:fmt.Printf("x的类型为&#xff1a;%T\n", i)casefunc(int)float64:fmt.Printf("x的类型为&#xff1a;%T\n", i)casebool,string:fmt.Printf("x的类型为&#xff1a;%T\n", i)default:fmt.Printf("x的类型为&#xff1a;%T\n", i)} }
0
语法格式&#xff1a;
for 循环变量初始化&#xff1b;循环条件&#xff1b;循环变量迭代{循环体}for 循环条件{循环执行体}for{/*死循环*/循环执行体}
快速入门示例&#xff1a;
funcmain(){var i intfor i &#61;2000; i <2021; i&#43;&#43;{fmt.Printf("%d年过去了\n", i)}i &#61;2000for i <2021{fmt.Printf("%d年过去了\n", i)i&#43;&#43;}for{fmt.Printf("%d年过去了\n", i)i&#43;&#43;if i >2020{break}} }
字符串遍历方式&#xff1a;
for循环遍历
funcdemo1(){var str string&#61;"Hello World!"for i :&#61;0; i <len(str); i&#43;&#43;{fmt.Printf("str[%d] &#61; %c\n", i, str[i])}}
var str string&#61;"Hello World!数风流人物&#xff0c;还看今朝"str2 :&#61;[]rune(str)for i :&#61;0; i <len(str2); i&#43;&#43;{fmt.Printf("str[%d] &#61; %c\n", i, str2[i])}
funcdemo1(){var a &#61;9for i :&#61;1; i <&#61; a; i&#43;&#43;{for j :&#61;1; j <&#61; i; j&#43;&#43;{fmt.Printf("%v x %v &#61; %v\t", j, i, i*j)}fmt.Println("")}}
运行结果如下&#xff1a;
1 x 1&#61;1 1 x 2&#61;22 x 2&#61;4 1 x 3&#61;32 x 3&#61;63 x 3&#61;9 1 x 4&#61;42 x 4&#61;83 x 4&#61;124 x 4&#61;16 1 x 5&#61;52 x 5&#61;103 x 5&#61;154 x 5&#61;205 x 5&#61;25 1 x 6&#61;62 x 6&#61;123 x 6&#61;184 x 6&#61;245 x 6&#61;306 x 6&#61;36 1 x 7&#61;72 x 7&#61;143 x 7&#61;214 x 7&#61;285 x 7&#61;356 x 7&#61;427 x 7&#61;49 1 x 8&#61;82 x 8&#61;163 x 8&#61;244 x 8&#61;325 x 8&#61;406 x 8&#61;487 x 8&#61;568 x 8&#61;64 1 x 9&#61;92 x 9&#61;183 x 9&#61;274 x 9&#61;365 x 9&#61;456 x 9&#61;547 x 9&#61;638 x 9&#61;729 x 9&#61;81
官网示例程序如下:package mainimport("fmt""math/rand")funcmain(){// Seeding with the same value results in the same random sequence each run.// For different numbers, seed with a different value, such as// time.Now().UnixNano(), which yields a constantly-changing number.rand.Seed(86)fmt.Println(rand.Intn(100))fmt.Println(rand.Intn(100))fmt.Println(rand.Intn(100))}