1.条件语句
-
主要循环:for if swich select
-
select语句类似switch,但select会随机执行一个可运行的case,如果没有case可运行,他将阻塞,直到有case可运行。
-
go没有三目运算,不支持形式条件判断
for -
for是go中唯一可用的循环,go没有while或do while
for init; condition; post {
}
//初始化, 条件, 发送
//init: 赋值表达式
//condition 关系表达式或逻辑表达式,循环控制条件
//post 赋值表达式,给控制变量增量或减量
注:循环初始化后,若条件为真,则执行内部主体{}。后执行post语句。
post语句将在循环的每次迭代后执行。
post语句执行后,条件会被重新检查,为真,则继续执行。
//用for循环打印1-10
package main
import (
"fmt"
)
func main() {
for i := 1; i <= 10; i++{
fmt.Printf("%d", i)
}
}
//小于10的时候计算sum值相加
package main
import (
"fmt"
)
func main() {
for i := 1; i < 10; i++{
fmt.Printf("%d", i)
}
}
for each range循环
// 声明主函数
package main
// 引入 fmt 包
import (
"fmt"
)
// 主函数
func main() {
// 声明字符串数组,包含两个元素
strings := []string{"google", "runoob"}
// 使用 range 迭代数组,输出每个元素的下标和值
for i, s := range strings{
fmt.Println(i, s)
}
// 声明整型数组,包含四个元素
numbers := [6]int{1, 2, 3, 5}
// 使用 range 迭代数组,输出每个元素的下标和值
for i, x := range numbers{
fmt.Printf("第%d位x的值 = %d\n", i, x)
}
}
for循环的range格式可以省略key和value
package main
// 导入fmt包,该包提供了格式化输入输出以及打印等功能
import (
"fmt"
)
// main函数是程序的入口函数,程序在运行时将首先执行这个函数
func main() {
// 创建一个map类型的变量map1
// map[int]float32表示这个map的key是int型,value是float32型
map1 := make(map[int]float32)
// 向map中添加key-value对
map1[1] = 1.0
map1[2] = 2.0
map1[3] = 3.0
map1[4] = 4.0
// 使用for-range循环遍历map1中的数据
for key, value := range map1{
fmt.Printf("key is: %d\n--value is: %f\n", key, value)
}
// 使用for-range循环遍历map1中的key值
for key := range map1 {
fmt.Printf("key is : %d\n", key)
}
// 使用for-range循环遍历map1中的value值
for _, value := range map1 {
fmt.Printf("value is %f\n", value)
}
}
- break,continue同c的语法一样
- 在Go的哲学里面,避免使用else
// package main表示这个文件所处的包为main,main包是Go程序的入口函数所在的包名
package main
// 导入fmt包,该包提供了格式化输入输出以及打印等功能
import (
"fmt"
)
// main函数是程序的入口函数,程序在运行时将首先执行这个函数
func main() {
num := 11;
if num%2 == 0 {
fmt.Println(num, "is even")
return
}
fmt.Println(num, "is odd")
}
- switch 计算表达式并将其与可能匹配的列表进行比较,并执行相应代码
- 可被认为是替换复杂if else从句的惯用方式
func main() {
age := 7
switch age{
case 5:
fmt.Println("the age is 5")
case 7:
fmt.Println("the age is 7")
default:
fmt.Println("the age is unknow")
}
}
函数
func name(参数列表) (返回值){
}
- 参数和返回值为可选项
func plus(a, b int) (res int){
return a + b
}
func main() {
a, b := 90, 6
sumAll := plus(a, b)
fmt.Println("sum", sumAll)
}