函数是基本的代码块,用于执行一个任务, go语言至少要有个main()函数 可以通过函数来划分不同的功能,逻辑上每个函数执行的是指定的任务。 函数声明告诉了编译器函数的名称,返回类型,和参数。 go语言标准库提供了多种可动用的内置函数,如len()函数可以接受不同类型参数并返回改类型的长度,如果我们传入的是 字符串则返回字符串的长度,如果传入的是数组,则返回数组中包含的元素个数。
函数的定义格式如下: func function_name( [参数列表] [返回类型]) { 函数体 } // func: 函数由func开始声明 // func_name: 函数名称,参数列表和返回值类型构成了函数签名。 // parameter list: 参数列表,就像一个占位符,当函数被调用时,可以将值传递给参数,这个值被称为实际参数, 参数列表指定的是参数类型、顺序、参数个数。参数是可选的,也就是说函数也可以不包含参数。 // return_types: 返回类型,函数返回一列值。是该列值的数据类型。有些功能不需要返回值,这种情况下return_types不是 必须的。 //函数体: 函数定义的代码集合。
//函数返回两个数的最大值 func max(num1,num2 int) int { var result int if (num1 > num2) { result = num1 } else { result = num2 } return result }
//函数的调用 当创建函数时,定义了函数需要做什么,通过调用改函数来执行指定的任务, 调用函数,向函数传递参数,并返回值:
package main import "fmt" func main() { //定义全局变量 var a int = 100 var b int = 200 var ret int //调用函数并返回最大值 ret = max(a,b) fmt.Printf("最大值是:%d\n",ret) }
//函数返回两个数的最大值 func max(num1,num2 int) int { //定义局部变量 var result int if (num1 > num2) { result = num1 } else { result = num2 } return result }
//返回多个值 package main import "fmt" func swap(x,y string) (string,string) { return y,x } func main(){ a,b := swap("google","lqb") fmt.Println(a,b) }
//函数参数 函数如果使用参数,改变量可称为函数的形参 形参就像定义在函数体内的局部变量 调用函数,可以通过两种方式来传递参数:1,值传递,在调用函数时将时间参数复制一份传递到函数中,这样在函数中如果对参数进行修改 将不会影响到实际参数。2,引用传递,将影响到实际参数。 默认情况下,go语言使用的是值传递,即在调用的过程中不会影响到实际参数。
//函数的用法 1、函数作为另外一个函数的实参,函数定义后可作为另外一个函数的实参传入 2、闭包,是匿名函数,可在动态编程中使用 3、方法,就是一个包含了接受者的函数。
5.go语言变量的作用域 作用域为已声明标识符的常量、变量、类型、函数或包,在源码中作用范围。 go语言变量可以在三个地方声明: 1.函数体内定义的变量称为局部变量 2.函数体外定于的变量称为全局变量 3.函数定义中的变量为形式参数
5.1、局部变量 在函数体内声明的变量称为局部变量,他们的作用域只在函数体内,参数和返回值变量也是局部变量。 实例中main()函数使用了局部变量a,b,c
package main import "fmt" func main() { //声明局部变量 var a,b,c int //初始化参数 a = 10 b = 20 c = a + b fmt.Printf("a+b的结果是: a = %d, b= %d, and c = %d\n", a , b , c) }