Aller - Fonctions

Une fonction est un groupe d'instructions qui exécutent ensemble une tâche. Chaque programme Go a au moins une fonction, qui estmain(). Vous pouvez diviser votre code en fonctions distinctes. La façon dont vous divisez votre code entre différentes fonctions dépend de vous, mais logiquement, la division doit être telle que chaque fonction effectue une tâche spécifique.

Une fonction declarationindique au compilateur un nom de fonction, un type de retour et des paramètres. Une fonctiondefinition fournit le corps réel de la fonction.

La bibliothèque standard Go fournit de nombreuses fonctions intégrées que votre programme peut appeler. Par exemple, la fonctionlen()prend des arguments de différents types et renvoie la longueur du type. Si une chaîne lui est transmise, la fonction renvoie la longueur de la chaîne en octets. Si un tableau lui est passé, la fonction renvoie la longueur du tableau.

Les fonctions sont également appelées method, sub-routine, ou procedure.

Définition d'une fonction

La forme générale d'une définition de fonction dans le langage de programmation Go est la suivante -

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

Une définition de fonction dans le langage de programmation Go se compose d'un en- tête de fonction et d'un corps de fonction . Voici toutes les parties d'une fonction -

  • Func - Il lance la déclaration d'une fonction.

  • Function Name- C'est le nom réel de la fonction. Le nom de la fonction et la liste des paramètres constituent ensemble la signature de la fonction.

  • Parameters- Un paramètre est comme un espace réservé. Lorsqu'une fonction est appelée, vous transmettez une valeur au paramètre. Cette valeur est appelée paramètre ou argument réel. La liste des paramètres fait référence au type, à l'ordre et au nombre des paramètres d'une fonction. Les paramètres sont facultatifs; autrement dit, une fonction peut ne contenir aucun paramètre.

  • Return Type- Une fonction peut renvoyer une liste de valeurs. Return_types est la liste des types de données des valeurs renvoyées par la fonction. Certaines fonctions exécutent les opérations souhaitées sans renvoyer de valeur. Dans ce cas, le return_type n'est pas obligatoire.

  • Function Body - Il contient une collection d'instructions qui définissent ce que fait la fonction.

Exemple

Le code source suivant montre une fonction appelée max(). Cette fonction prend deux paramètres num1 et num2 et renvoie le maximum entre les deux -

/* 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 
}

Appeler une fonction

Lors de la création d'une fonction Go, vous donnez une définition de ce que la fonction doit faire. Pour utiliser une fonction, vous devrez appeler cette fonction pour exécuter la tâche définie.

Lorsqu'un programme appelle une fonction, le contrôle du programme est transféré à la fonction appelée. Une fonction appelée exécute une tâche définie et lorsque son instruction return est exécutée ou lorsque l'accolade fermante de fin de fonction est atteinte, elle renvoie le contrôle du programme au programme principal.

Pour appeler une fonction, il vous suffit de transmettre les paramètres requis avec son nom de fonction. Si la fonction renvoie une valeur, vous pouvez stocker la valeur renvoyée. Par exemple -

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 
}

Nous avons conservé la fonction max () avec la fonction main () et compilé le code source. Lors de l'exécution de l'exécutable final, il produirait le résultat suivant -

Max value is : 200

Renvoyer plusieurs valeurs de Function

Une fonction Go peut renvoyer plusieurs valeurs. Par exemple -

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)
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

Kumar Mahesh

Arguments de fonction

Si une fonction doit utiliser des arguments, elle doit déclarer des variables qui acceptent les valeurs des arguments. Ces variables sont appeléesformal parameters de la fonction.

Les paramètres formels se comportent comme les autres variables locales à l'intérieur de la fonction et sont créés à l'entrée dans la fonction et détruits à la sortie.

Lors de l'appel d'une fonction, les arguments peuvent être passés à une fonction de deux manières:

Sr.Non Type d'appel et description
1 Appel par valeur

Cette méthode copie la valeur réelle d'un argument dans le paramètre formel de la fonction. Dans ce cas, les modifications apportées au paramètre à l'intérieur de la fonction n'ont aucun effet sur l'argument.

2 Appel par référence

Cette méthode copie l'adresse d'un argument dans le paramètre formel. À l'intérieur de la fonction, l'adresse est utilisée pour accéder à l'argument réel utilisé dans l'appel. Cela signifie que les modifications apportées au paramètre affectent l'argument.

Par défaut, Go utilise l'appel par valeur pour transmettre des arguments. En général, cela signifie que le code d'une fonction ne peut pas modifier les arguments utilisés pour appeler la fonction. Le programme ci-dessus, tout en appelant la fonction max (), a utilisé la même méthode.

Utilisation de la fonction

Une fonction peut être utilisée des manières suivantes:

Sr.Non Utilisation et description de la fonction
1 Fonction comme valeur

Les fonctions peuvent être créées à la volée et peuvent être utilisées comme valeurs.

2 Fermetures de fonction

Les fermetures de fonctions sont des fonctions anonymes et peuvent être utilisées dans la programmation dynamique.

3 Méthode

Les méthodes sont des fonctions spéciales avec un récepteur.