函数通常是程序中的代码或语句块,使用户能够重复使用相同的代码,从而最终达到节省内存,节省时间,更重要的是,提供了更好的代码可读性。因此,基本上函数是语句的集合,这些语句执行某些特定的任务并将结果返回给调用方。函数也可以执行某些特定任务而无需返回任何内容。
函数声明是一种构造函数的方法。
语法:
func function_name(Parameter_list)(Return_type){ // function body..... }
该函数的声明包含:
func:它是Go语言的关键字,用于创建函数。
function_name:它是函数的名称。
Parameter_list:包含函数参数的名称和类型。
Return_type:这是可选的,它包含函数返回的值的类型。如果在函数中使用return_type,则必须在函数中使用return语句。
函数调用是在用户希望执行函数时完成的。需要调用函数才能使用它的功能。如下面的示例所示,我们有一个名为add()的函数,它有两个参数。现在我们通过使用其名称,即具有两个参数的area(12,10)在主函数中调用此函数。
package main import "fmt" //area()用于查找矩形的面积 //函数的两个参数,即长度和宽度 func area(length, width int) int { Ar := length * width return Ar } func main() { //显示矩形的面积 //通过方法调用 fmt.Printf("矩形的面积 : %d", area(12, 10)) }
输出:
矩形的面积 : 120
在Go语言中,传递给函数的参数称为实际参数(实参),而函数接收的参数称为形式参数(形参)。
注意:默认情况下,Go语言使用按值调用方法在函数中传递参数。
Go语言支持两种向函数传递参数的方法:
按值调用:在此参数传递方法中,实际参数的值将复制到函数的形式参数中,并且两种类型的参数存储在不同的存储位置中。因此,在函数内部进行的任何更改都不会反映在调用者的实际参数中。
package main import "fmt" // 交换值的函数 func swap(a, b int)int{ var o int o= a a=b b=o return o } func main() { var p int = 10 var q int = 20 fmt.Printf("p = %d 和 q = %d", p, q) // call by values swap(p, q) fmt.Printf("\np = %d 和 q = %d",p, q) }
输出:
p = 10 和 q = 20 p = 10 和 q = 20
通过引用调用:实际参数和形式参数都指向相同的位置,因此在函数内部所做的任何更改实际上都反映在调用者的实际参数中。
package main import "fmt" //交换值的函数 func swap(a, b *int) int { var o int o = *a *a = *b *b = o return o } func main() { var p int = 10 var q int = 20 fmt.Printf("p = %d 和 q = %d", p, q) //引用调用 swap(&p, &q) fmt.Printf("\np = %d 和 q = %d", p, q) }
输出:
p = 10 和 q = 20 p = 20 和 q = 10