English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
函数通常是程序中的代码或语句块,使用户能够重复使用相同的代码,从而最终达到节省内存,节省时间,更重要的是,提供了更好的代码可读性。因此,基本上函数是语句的集合,这些语句执行某些特定的任务并将结果返回给调用方。函数也可以执行某些特定任务而无需返回任何内容。
函数声明是一种构造函数的方法。
语法:
func function_name(Parameter_list)(Return_type){ // function body..... }
该函数的声明包含:
func:它是Go语言的关键字,用于创建函数。
function_name:它是函数的名称。
Parameter_list:Contém o nome e o tipo dos parâmetros da função.
Contém o nome e o tipo dos parâmetros da função.Return_type:
Chamada de função12,10)é chamada na função principal.
package main import "fmt" //area() é usada para encontrar a área do retângulo //Os dois parâmetros da função, ou seja, comprimento e largura func area(comprimento, largura int) int { Ar := comprimento * largura return Ar } func main() { //Exibir a área do retângulo //Chamada por método fmt.Printf("Área do retângulo: %d", area(12, 10)) }
Saída:
Área do retângulo: 120
No Go, os parâmetros passados para uma função são chamados de parâmetros reais (parâmetros reais), e os parâmetros recebidos pela função são chamados de parâmetros formais (parâmetros formais).
Nota:Por padrão, o Go usa o método de chamada por valor para passar parâmetros para funções.
O Go suporta dois métodos de passar parâmetros para funções:
Chamada por valor: Neste método de passagem de parâmetros, o valor do parâmetro real é copiado para o parâmetro formal da função e ambos os tipos de parâmetros são armazenados em diferentes locais de armazenamento. Portanto, qualquer alteração feita dentro da função não reflete no parâmetro real do chamador.
package main import "fmt" // Função de troca de valores 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 e q = %d", p, q) // call by values swap(p, q) fmt.Printf("\np = %d e q = %d", p, q) }
Saída:
p = 10 e = q = 20 p = 10 e = q = 20
Chamada por referência:Os parâmetros reais e formais apontam para a mesma posição, portanto, qualquer alteração feita dentro da função reflete no parâmetro real do chamador.
package main import "fmt" //Função de troca de valores 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 e q = %d", p, q) //Chamada por referência swap(&p, &q) fmt.Printf("\np = %d e q = %d", p, q) }
Saída:
p = 10 e = q = 20 p = 20 e q = 10