go语言中if的结构语法如下:
if 条件判断 {// 代码语句}
if 条件判断 {//代码语句 1} else {//代码语句2}
if 条件判断 1 {//代码语句 1} else if 条件判断 2 {//代码语句 2} else if 条件判断 3 {//代码语句 3} else {//代码语句 4}从上到下依次判断条件,如果结果为真,就执行 { } 内的代码 。
go语言中的if语句和我们熟悉的java语句当中的使用方式基本一致,简单的介绍之后就能够操作起来。
switch 变量或者表达式的值 {case 值 1 ://代码语句1case 值 2 ://代码语句2case 值 3 ://代码语句3default ://代码语句4}
程序执行到 switch 处,首先将变量或者表达式的值计算出来,然后拿着这个值依次跟每个 case 后 面所带的值进行匹配,一旦匹配成功,则执行该 case 所带的代码, 执行完成后,跳出switch-case结构 。如果,跟每个 case 所带的值都不匹配。就看当前这个 switch-case 结构中是否存在 default ,如果有 default ,则执行 default 中的语句,如果没有 default ,则该 switch-case 结构什么都不做。
- 某个case 后面跟着的代码执行完毕后,不会再执行后面的case(相当于我们熟悉的java中break go语言中switch语句中执行完一个case是不用break的 每次匹配成功执行完代码后就会默认跳出switch),而是跳出整个switch结构, 相当于每个case后面都跟着break(终止)。
- 但是如果想执行完成某个case后,强制执行后面的case,可以使用fallthrough。
- case后面可以允许有多个值,这些值在逻辑上具有相同的处理,值之间用,隔开
func main() { //switc 表达式{case 值1:代码1 case 值2:代码2} 那个分支满足条件执行那一个 //输入月份 计算天数 day := 0 m := 0 fmt.Scan(&m) switch m { //如果有多个值 执行相同代码 可以使用逗号分隔 case 1, 3, 5, 7, 8, 10, 12: day = 31 //fallthrough //执行完当前分支 继续向下执行 case 2: day = 29 case 4, 6, 9, 11: day = 30 default: //默认选择 day = -1 } fmt.Println(day) }
for 表达式 1 ; 表达式 2 ; 表达式 3 {//循环体}
- for i := 1; i <= 100; i++ {
- sum += i
- }
- fmt.Println(sum)
for 循环条件 {for 循环条件 {//执行代码}}
- func main() {
- //冒泡排序
- //比较两个相邻数据元素 满足条件 交换数据位置
-
- slice := []int{9, 1, 5, 6, 10, 8, 3, 7, 2, 4}
-
- //外层控制行 表示执行次数
- for i := 0; i < len(slice)-1; i++ {
- //内层控制列 表示比较次数
- for j := 0; j < len(slice)-1-i; j++ {
- //比较两个相邻元素 大于号 升序排序 小于号 降序排序
- if slice[j] < slice[j+1] {
- //交换数据的值 = 多重赋值
- slice[j], slice[j+1] = slice[j+1], slice[j]
- }
- }
- }
- fmt.Println(slice)
-
- }
在循环语句中,如果希望立即终止本次循环,并执行下一次循环,此时就需要使用 continue 语 句。
goto语句可以直接跳转到我们指定的flag之后的语句。但是注意goto语句跳转不可以破坏代码的逻辑结构( 不可以跳入循环内部,也不可以跳出函数 )。goto语句的跳转强度是比较大的,当我们想要跳出好几层嵌套的循环的时候我们可以使用goto语句。
- func main0103() {
- //goto 无条件跳转语句
- fmt.Println("1")
- FLAG:
- fmt.Println("2")
- fmt.Println("3")
- goto FLAG
- fmt.Println("4")
- }
- func main() {
- //goto 可不以跳入循环内部 不可以跳出函数
- HERE:
- for i := 0; i <= 10; i++ {
- if i == 5 {
- //break
- goto HERE
- }
- fmt.Println(i)
- }
- fmt.Println("程序执行结束...")
- }