目录
一、条件判断
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
}