#流程控制
- if语句
go语言的if语句不需要括号,go语言的if还可以在条件判断的地方声明变量,go语言中的goto语句和c语言中的用法一样
func main() {
var x int = 10
//go 语言的if不需要括号
if x > 10 {
fmt.Println("x is greater than 10")
} else {
fmt.Println("x is less than 10")
}
//go 语言的条件判断的地方可以声明一个变量
if y := 100; y > 100 {
fmt.Println("y is greater than 100")
} else {
fmt.Println("y is less than 100")
}
//多语句
if x > 10 {
fmt.Println("x is greater than 10")
} else if x == 10 {
fmt.Println("x is 10")
} else {
fmt.Println("x is less than 10")
}
//go 语言中的goto语句与c语言中的使用方法相同
}
- for循环
go语言中的for和c语言类似, break 和continue在这里也同样适用
func main() {
//go 语言的for和c语言的类似
for i := 0; i < 100; i++ {
fmt.Println("i is: ", i)
}
//go for语句可以省略表达式1 和 表达式3,用法同while
x := 0
for x < 1000 {
fmt.Println("x is : ", x)
x += 1
}
//同样go语言循环语句中也可以使用break 和 continue,用法和其它语言相同
}
- switch语句
go语言中的switch的特色之处在于,go语言的case语句后自带break,如果不行case到某条语句后不想break可以使用关键字fallthrough
func main() {
//1.go语言的case语句后自带break语句,匹配到后自动跳出
i := 2
switch i {
case 1:
fmt.Println("i is 1")
case 2:
fmt.Println("i is 2")
case 3:
fmt.Println("i is 3")
default:
fmt.Println("none")
}
//2.可以使用fallthrough强制执行后面的语句
switch i {
case 1:
fmt.Println("i is 1")
fallthrough
case 2: //case到2后强制执行吓一跳case
fmt.Println("i is 2")
fallthrough
case 3:
fmt.Println("i is 3")
fallthrough
default:
fmt.Println("none")
}
}
#函数
- go语言函数支持多个返回值
func funcName(input1 type1, input2 type2) (output1 type1, ouput2 type2) {
//code
//返回多个值
return value1, value2
}
- 变参函数
函数体中,变量arg是一个int的slice
func func1(arg ...int) {
for _, n := range arg {
fmt.Println("arg is: ", n)
}
}
-
传值与传指针
go 语言的指针同样也是使用 & 和 * -
defer
函数中使用defer语句,当函数执行到最后时defer语句会按照逆序执行,最后函数返回 -
main 函数和init函数
init 能够应用到所有的package,main函数只能应用到package main
这两个函数在定义时不能有任何的参数和返回值,go语言会自动调用init和main函数