函数通常是程序中的代码块或语句块,它使用户能够重用相同的代码,最终避免过度使用内存,节省时间,更重要的是,提供更好的代码可读性。所以基本上,一个函数是一组执行某些特定任务并将结果返回给调用者的语句。一个函数也可以执行一些特定的任务而不返回任何东西。
函数声明
函数声明意味着一种构造函数。
句法:
func function_name(Parameter-list)(Return_type){
// function body.....
}
函数的声明包含:
- func:是Go语言中的关键字,用于创建函数。
- 函数名:它是函数的名称。
- 参数列表:它包含函数参数的名称和类型。
- Return_type:它是可选的,它包含函数返回的值的类型。如果您在函数中使用 return_type,则有必要在函数使用 return 语句。
函数调用
函数调用或函数调用在用户想要执行函数。需要调用该函数才能使用其功能。如下例所示,我们有一个名为 area() 的函数,带有两个参数。现在我们在主函数使用它的名字来调用这个函数,即带有两个参数的 area(12, 10)。
例子:
C
// Go program to illustrate the
// use of function
package main
import "fmt"
// area() is used to find the
// area of the rectangle
// area() function two parameters,
// i.e, length and width
func area(length, width int)int{
Ar := length* width
return Ar
}
// Main function
func main() {
// Display the area of the rectangle
// with method calling
fmt.Printf("Area of rectangle is : %d", area(12, 10))
}
C
// Go program to illustrate the
// concept of the call by value
package main
import "fmt"
// function which swap values
func swap(a, b int)int{
var o int
o= a
a=b
b=o
return o
}
// Main function
func main() {
var p int = 10
var q int = 20
fmt.Printf("p = %d and q = %d", p, q)
// call by values
swap(p, q)
fmt.Printf("\np = %d and q = %d",p, q)
}
C
// Go program to illustrate the
// concept of the call by reference
package main
import "fmt"
// function which swap values
func swap(a, b *int)int{
var o int
o = *a
*a = *b
*b = o
return o
}
// Main function
func main() {
var p int = 10
var q int = 20
fmt.Printf("p = %d and q = %d", p, q)
// call by reference
swap(&p, &q)
fmt.Printf("\np = %d and q = %d",p, q)
}
输出:
Area of rectangle is : 120
函数参数
在围棋的语言,传递给函数的参数称为实际参数,而由函数收到的参数被称为形式参数。
注意:默认情况下,Go 语言使用按值调用方法在函数传递参数。
Go 语言支持两种向函数传递参数的方式:
- 按值调用: :在这种参数传递方法中,将实际参数的值复制到函数的形式参数中,并将两种类型的参数存储在不同的内存位置。因此,在函数内部所做的任何更改都不会反映在调用者的实际参数中。
例子:
C
// Go program to illustrate the
// concept of the call by value
package main
import "fmt"
// function which swap values
func swap(a, b int)int{
var o int
o= a
a=b
b=o
return o
}
// Main function
func main() {
var p int = 10
var q int = 20
fmt.Printf("p = %d and q = %d", p, q)
// call by values
swap(p, q)
fmt.Printf("\np = %d and q = %d",p, q)
}
输出:
p = 10 and q = 20
p = 10 and q = 20
- 引用调用:实参和形参都指向同一个位置,所以在函数内部所做的任何更改实际上都反映在调用者的实参中。
例子:
C
// Go program to illustrate the
// concept of the call by reference
package main
import "fmt"
// function which swap values
func swap(a, b *int)int{
var o int
o = *a
*a = *b
*b = o
return o
}
// Main function
func main() {
var p int = 10
var q int = 20
fmt.Printf("p = %d and q = %d", p, q)
// call by reference
swap(&p, &q)
fmt.Printf("\np = %d and q = %d",p, q)
}
输出:
p = 10 and q = 20
p = 20 and q = 10