Go 语言循环语句
for循环是一个循环控制结构,可以执行指定次数的循环。
for init; condition; post { }
init: 一般为赋值表达式,给控制变量赋初值;
condition: 关系表达式或逻辑表达式,循环控制条件;
post: 一般为赋值表达式,给控制变量增量或减量。
for i:=1;i<100;i++{ fmt.Println(i) }
for range
for循环的 range 格式可以对 slice、map、数组、字符串等进行迭代循环
for key, value := range oldMap { newMap[key] = value }
求和
var sum = 0 for i:=1;i<100;i++{ sum+=i } fmt.Println(sum) //4950
for省略的形式
省略形式1
sum:=0 for;sum<=100;{ sum+=sum } fmt.Println(sum)
省略形式2
sum:=0 for sum<=10 { sum+=sum } fmt.Println(sum)
range
str:=[]string{"躲躲","前端开发"} for i,s :=range str{ fmt.Println(i,s) //0 躲躲 1 前端开发 } numbers :=[6] int{1,2,3,4,5} for i,s :=range numbers{ fmt.Println(i,s) //0 1 1 2 2 3 3 4 4 5 5 0 } numbers :=[]int{1,2,4,5} for i,s :=range numbers{ fmt.Println(i,s) }
函数
1.函数是基本的代码块,用于执行一个任务。
2.Go 语言最少有个 main() 函数。
3.你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务。
4.函数声明告诉了编译器函数的名称,返回类型,和参数。
5.Go 语言标准库提供了多种可动用的内置的函数。例如,len() 函数可以接受不同类型
参数并返回该类型的长度。如果我们传入的是字符串则返回字符串的长度,如果传入的是数组,则返回数组中包含的元素个数。
函数放在main函数里面去执行
func max(num1,num2 int) int{ return num1+num2 } fmt.Println(max(1,2))
返回多个参数
func strs(a,b string) (string,string){ return a,b } var a,b= strs("詹躲躲","前端开发") fmt.Println(a,b) //詹躲躲 前端开发
函数参数
传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。
func swap(num1,num2 int) int{ var temp int temp = num1 num1 = num2 num2 = temp return temp } ret:=swap(1,10) fmt.Println(ret) //1
引用传递
引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。
var a int = 100 var b int= 200 swap(&a,&b) func swap(num1 *int,num2 *int){ var temp int temp = *num1 *num1 = *num2 *num2 = temp fmt.Println(num1) //0xc0000ac058 } // var s1,t1 = "abcd", "abcde" // var s2,t2 = "ae","aea" // ret:=findTheDifference(s1,t1) // ret1:=findTheDifference(s2,t2) // fmt.Println(ret) // fmt.Println(ret1) // } // func findTheDifference(s string, t string) byte { // return t[len(s):] // }
函数作为实参
getSqure:=func(x float64) float64{ return math.Sqrt(x) } fmt.Println(getSqure(9)) //3
声明一个函数类型
fmt.Println(math.Sqrt(9)) //3 testCallBack(1,CallBack) type cb func(int) int func testCallBack(x int,f cb){ f(x) } func CallBack(x int) int{ fmt.Println(x) //1 return x }
变量作用域
作用域为已声明标识符所表示的常量、类型、变量、函数或包在源代码中的作用范围。
Go 语言中变量可以在三个地方声明:
函数内定义的变量称为局部变量
函数外定义的变量称为全局变量
函数定义中的变量称为形式参数
局部变量
在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,参数和返回值变量也是局部变量。
声明局部变量
var a, b, c int
声明全局变量
var g int
Go 语言程序中全局变量与局部变量名称可以相同,但是函数内的局部变量会被优先考虑。
形式参数
形式参数会作为函数的局部变量来使用。
fmt.Println(math.Sqrt(9)) //3 c:=sum(20,23) fmt.Println(c) //43 func sum(x,y int)int{ fmt.Printf("sum中的变量x: %d",x) //20 fmt.Printf("sum中的变量y: %d",y) //23 return x+y }