目录
一、条件判断1. if
if 格式有两种写法:
package main
import "fmt"
func main() {
    a := 1
	if a < 10 {
		fmt.Println("第一种写法,此时a是函数体内的变量")
	}
	if b := 1; b < 10 {
		fmt.Println("第二种写法,此时b是if中的变量")
	}
}2. if, else if, else
package
import "fmt"
func main() {
    source := 80
	if source > 90 {
		fmt.Println("优秀")
	} else if source >= 70 {
		fmt.Println("还行")
	} else {
		fmt.Println("啥也不是")
	}
}1. for
for 循环的三种写法:
package main
import "fmt"
func main() {
    // for 第一种写法
	for i := 0; i < 10; i++ {
		fmt.Print(i) // 0123456789
	}
	// for 第二种写法
	j := 0
	for ; j < 10; j++ {
		fmt.Print(j) // 0123456789
	}
	// for 第三种写法
	k := 0
	for k < 10 {
		fmt.Print(k) // 0123456789
		k++
	}
}2. for range
package main
import "fmt"
func main() {
    var str = "你好golang"
	for key, val := range str {
		fmt.Printf("key=%v val=%c\n", key, val) // 为什么val不用%v,因为%v获取的是ascii值
		/**
		结果如下:
			key=0 val=你
			key=3 val=好
			key=6 val=g
			key=7 val=o
			key=8 val=l
			key=9 val=a
			key=10 val=n
			key=11 val=g
		*/
	}
	var arr = []string{"php", "python", "java", "golang"} // 这叫切片不叫数组
	for k, v := range arr {
		fmt.Printf("key=%v val=%v\n", k, v)
		/**
		结果如下:
			key=0 val=php
			key=1 val=python
			key=2 val=java
			key=3 val=golang
		*/
	}
}3. switch case
基本用法:
package main
import "fmt"
func main() {
    // switch case 不加break也可以,但是为了和其他语言一致,个人建议加上
	var ext = ".js"
	switch ext {
	case ".html":
		fmt.Println("text/html")
		break
	case ".css":
		fmt.Println("text/css")
		break
	case ".js":
		fmt.Println("text/javascript")
		break
	default:
		fmt.Println("格式错误")
		break
	}
}对比多个值
package main
import "fmt"
func main() {
    // case可以对比多个值
	var n = 2
	switch n {
	case 1, 3, 5, 7, 9:
		fmt.Println("奇数")
		break
	case 2, 4, 6, 8, 10:
		fmt.Println("偶数")
		break
	default:
		fmt.Println("啥也不是")
		break
	}
    // 第二种写法
	switch n2 := 2; n2 {
	case 1, 3, 5, 7, 9:
		fmt.Println("奇数")
		break
	case 2, 4, 6, 8, 10:
		fmt.Println("偶数")
		break
	default:
		fmt.Println("啥也不是")
		break
	}
}case中有表达式
package main
import "fmt"
func main() {
    // case 表达式 switch 后面不再有参数
	age := 56
	switch {
	case age < 25:
		fmt.Println("好好学习")
		break
	case age >= 25 && age <= 59:
		fmt.Println("好好工作")
		break
	case age > 60:
		fmt.Println("享受吧")
		break
	default:
		fmt.Println("输入错误")
		break
	}
}fallthrough 循环穿透
package main
import "fmt"
func main() {
    // switch中穿透 fallthrought 符合a条件同时手动符合b条件
	a := "a"
	switch a {
	case "a":
		fmt.Println("a")
		fallthrough
	case "b":
		fmt.Println("b")
		break
	default:
		fmt.Println("default")
		break
	}
}1. break
跳出整个循环
package main
import "fmt"
func main() {
    for i := 0; i < 10; i++ {
		if i == 3 {
			break // 跳出循环
		}
		fmt.Println(i) // 0 1 2
	}
	for i := 0; i < 2; i++ {
		for j := 0; j < 10; j++ {
			if j == 2 {
				break // 跳出循环
			}
			fmt.Printf("i=%v j=%v\n", i, j) //i=0 j=0 i=0 j=1 i=1 j=0 i=1 j=1
		}
	}
}跳出指定标签循环
package main
import "fmt"
func main() {
label1:
	for i := 0; i < 2; i++ {
		for j := 0; j < 10; j++ {
			if j == 2 {
				break label1 // 跳出label1标签循环
			}
			fmt.Printf("i=%v j=%v\n", i, j) //i=0 j=0 i=0 j=1
		}
	}
}2. continue
跳出本次循环
package main
import "fmt"
func main() {
    // continue 跳出本次循环
	for i := 0; i < 5; i++ {
		if i == 2 {
			continue
		}
		fmt.Println(i) // 0 1 3 4
	}
	for i := 0; i < 2; i++ {
		for j := 0; j < 4; j++ {
			if j == 2 {
				continue
			}
			fmt.Printf("i=%v j=%v\n", i, j) //i=0 j=0 i=0 j=1 i=0 j=3 i=1 j=0 i=1 j=1 i=1 j=3
		}
	}
}跳出本次指定标签的循环
package main
import "fmt"
func main() {
    label2:
	for i := 0; i < 2; i++ {
		for j := 0; j < 4; j++ {
			if j == 2 {
				continue label2
			}
			fmt.Printf("i=%v j=%v\n", i, j)
		}
	}
}3. goto
跳到指定标签位置
package main
import "fmt"
func main() {
    // goto 跳到指定标签
	var n = 10
	if n > 6 {
		fmt.Println(n)
		goto label3
	}
	fmt.Println("a")
	fmt.Println("b")
label3:
	fmt.Println("c")
	fmt.Println("d") // 10 c d
}