Go - Funções

Uma função é um grupo de instruções que, juntas, executam uma tarefa. Cada programa Go tem pelo menos uma função, que émain(). Você pode dividir seu código em funções separadas. Como você divide seu código entre diferentes funções depende de você, mas logicamente, a divisão deve ser tal que cada função execute uma tarefa específica.

Uma função declarationinforma ao compilador sobre um nome de função, tipo de retorno e parâmetros. Uma funçãodefinition fornece o corpo real da função.

A biblioteca padrão Go fornece várias funções integradas que seu programa pode chamar. Por exemplo, a funçãolen()recebe argumentos de vários tipos e retorna o comprimento do tipo. Se uma string é passada para ele, a função retorna o comprimento da string em bytes. Se um array é passado para ele, a função retorna o comprimento do array.

Funções também são conhecidas como method, sub-routine, ou procedure.

Definindo uma função

A forma geral de definição de uma função na linguagem de programação Go é a seguinte -

func function_name( [parameter list] ) [return_types]
{
   body of the function
}

Uma definição de função na linguagem de programação Go consiste em um cabeçalho de função e um corpo de função . Aqui estão todas as partes de uma função -

  • Func - Inicia a declaração de uma função.

  • Function Name- É o nome real da função. O nome da função e a lista de parâmetros juntos constituem a assinatura da função.

  • Parameters- Um parâmetro é como um espaço reservado. Quando uma função é chamada, você passa um valor para o parâmetro. Esse valor é conhecido como parâmetro ou argumento real. A lista de parâmetros se refere ao tipo, ordem e número dos parâmetros de uma função. Os parâmetros são opcionais; ou seja, uma função pode não conter parâmetros.

  • Return Type- Uma função pode retornar uma lista de valores. O return_types é a lista de tipos de dados dos valores que a função retorna. Algumas funções realizam as operações desejadas sem retornar um valor. Nesse caso, o return_type não é obrigatório.

  • Function Body - Contém uma coleção de instruções que definem o que a função faz.

Exemplo

O código-fonte a seguir mostra uma função chamada max(). Esta função recebe dois parâmetros num1 e num2 e retorna o máximo entre os dois -

/* function returning the max between two numbers */
func max(num1, num2 int) int {
   /* local variable declaration */
   result int

   if (num1 > num2) {
      result = num1
   } else {
      result = num2
   }
   return result 
}

Chamando uma função

Ao criar uma função Go, você dá uma definição do que a função deve fazer. Para usar uma função, você terá que chamar essa função para executar a tarefa definida.

Quando um programa chama uma função, o controle do programa é transferido para a função chamada. Uma função chamada executa uma tarefa definida e quando sua instrução de retorno é executada ou quando sua chave de fechamento de finalização de função é alcançada, ela retorna o controle do programa de volta ao programa principal.

Para chamar uma função, você simplesmente precisa passar os parâmetros necessários junto com o nome da função. Se a função retornar um valor, você poderá armazenar o valor retornado. Por exemplo -

package main

import "fmt"

func main() {
   /* local variable definition */
   var a int = 100
   var b int = 200
   var ret int

   /* calling a function to get max value */
   ret = max(a, b)

   fmt.Printf( "Max value is : %d\n", ret )
}

/* function returning the max between two numbers */
func max(num1, num2 int) int {
   /* local variable declaration */
   var result int

   if (num1 > num2) {
      result = num1
   } else {
      result = num2
   }
   return result 
}

Mantemos a função max () junto com a função main () e compilamos o código-fonte. Ao executar o executável final, ele produziria o seguinte resultado -

Max value is : 200

Retornando vários valores de Função

Uma função Go pode retornar vários valores. Por exemplo -

package main

import "fmt"

func swap(x, y string) (string, string) {
   return y, x
}
func main() {
   a, b := swap("Mahesh", "Kumar")
   fmt.Println(a, b)
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

Kumar Mahesh

Argumentos de função

Se uma função deve usar argumentos, ela deve declarar variáveis ​​que aceitam os valores dos argumentos. Essas variáveis ​​são chamadas deformal parameters da função.

Os parâmetros formais se comportam como outras variáveis ​​locais dentro da função e são criados na entrada na função e destruídos na saída.

Ao chamar uma função, existem duas maneiras de os argumentos serem passados ​​para uma função -

Sr. Não Tipo de chamada e descrição
1 Chamada por valor

Este método copia o valor real de um argumento para o parâmetro formal da função. Nesse caso, as alterações feitas no parâmetro dentro da função não afetam o argumento.

2 Chamada por referência

Este método copia o endereço de um argumento no parâmetro formal. Dentro da função, o endereço é usado para acessar o argumento real usado na chamada. Isso significa que as alterações feitas no parâmetro afetam o argumento.

Por padrão, Go usa chamada por valor para passar argumentos. Em geral, isso significa que o código dentro de uma função não pode alterar os argumentos usados ​​para chamar a função. O programa acima, ao chamar a função max (), usou o mesmo método.

Uso de função

Uma função pode ser usada das seguintes maneiras:

Sr. Não Uso e descrição da função
1 Função como valor

As funções podem ser criadas instantaneamente e podem ser usadas como valores.

2 Fechamentos de funções

Fechamentos de funções são funções anônimas e podem ser usados ​​na programação dinâmica.

3 Método

Métodos são funções especiais com um receptor.