English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Las funciones suelen ser bloques de código o instrucciones en un programa, que permiten al usuario repetir el mismo código, lo que finalmente lleva a un ahorro de memoria, un ahorro de tiempo y, lo que es más importante, una mejor legibilidad del código. Por lo tanto, básicamente, las funciones son conjuntos de instrucciones que ejecutan tareas específicas y devuelven resultados al llamador. Las funciones también pueden ejecutar tareas específicas sin devolver ningún contenido.
La declaración de función es un método de construcción de funciones.
Sintaxis:
func function_name(Lista_de_parámetros)(Tipo_de_retorno){ // cuerpo_de_función..... }
La declaración de esta función incluye:
func:es una palabra clave del lenguaje Go, utilizada para crear funciones.
function_name:esfunciónel nombre.
Lista_de_parámetros:包含函数参数的名称和类型。
Return_type:这是可选的,它包含函数返回的值的类型。如果在函数中使用return_type,则必须在函数中使用return语句。
函数调用是在用户希望执行函数时完成的。需要调用函数才能使用它的功能。如下面的示例所示,我们有一个名为add()的函数,它有两个参数。现在我们通过使用其名称,即具有两个参数的area(12,10)在主函数中调用此函数。
package main import \ //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 \ // 交换值的函数 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 \ //交换值的函数 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 y q = 10