Golang 5 : Les fonctions

in #utopian-io7 years ago

Les Fonctions

image.png

C'est quoi une fonction?

Une fonction est un bloc de code qui performe une tâche spécifique. Une fonction prend en paramètre des entrées et fait des calculs sur ces entrées et génère une sortie.

Déclaration d'une fonction

Le syntaxe général de la déclaration d'une fonction en Go est:

 func nomfonction(nomduparametre type) returntype {  
 //le corps de la fonction
}

La déclaration de la fonction commence avec le mot clé func suivi du nomfonction . Les paramètres sont indiqués entre () suivis de returntype de la fonction. Le syntaxe utilisé pour la déclaration d'un paramètre est le nom du paramètre suivi du type de paramètre. On peut spécifier autant de paramètres qu'on veut(paramètre1 type, paramètre2 type). Ce qui se trouve entre les {} est le corps de la fonction.

Les paramètres et le return type sont optionnels dans une fonction. Par conséquent le syntaxe suivant est aussi valide:

 func nomfonction(){
   
 }

Une fonction simple

On va écrire une fonction qui prend en paramètre le prix d'un produit et son numéro et qui retourne le prix total en multipliant le nombre de produits par le prix unitaire comme suivant:

func calculprixtotal(prix int, no int) int {  
    var prixTotal = prix * no
    return prixTotal
}

Si deux paramètres consécutifs ont le même type, on peut éviter d'écrire le type à chaque fois, comme suivant:

func calculprixtotal(prix , no int) int {  
    var prixTotal = prix * no
    return prixTotal
}

Maintenant qu'on a construit la fonction, le syntaxe pour l'appeler est nomfonction nomfonction(paramètres). La fonction ci-dessus peut être appelée en utilisant le code suivant:

calculprixtotal(12 , 10)

Voici le programme complet qui fait appel à la fonction ci-dessus et qui retourne le prix total.

package main

import (  
    "fmt"
)

func calculprixtotal(prix, no int) int {  
    var prixTotal = prix * no
    return prixTotal
}
func main() {  
    prix, no := 10, 10
    prixTotal := calculprixtotal(prix, no )
    fmt.Println("Le prix total est", prixTotal)
}

Le programme ci-dessus va retourner:

Le prix total est 100

Retour de plusieurs valeurs

Il est possible qu'une fonction retourne plusieurs valeurs. On va écrire une fonction qui prend en paramètres la longueur et la largeur d'un rectangle et qui retourne l'aire et le périmètre du rectangle:

package main

import (  
    "fmt"
)

func rectInf(longueur, largeur float64)(float64, float64) {  
    var surface = longueur * largeur
    var perimetre = (longueur + largeur) * 2
    return surface, perimetre
}

func main() {  
     surface, perimetre := rectInf(12.7, 8.7)
    fmt.Printf("Surface %f Perimetre %f", surface, perimetre) 
}

La fonction ci-dessus retourne deux valeurs:

Surface 110,49 Perimetre 30,1

Les valeurs retournées nommées

Il est possible de retourner des valeurs nommées d'une fonction. Si une valeur retournée est nommée, elle peut être considérée comme une valeur déclarée dans la première ligne de la fonction.

La fonction rectInf peut être réécrite en utilisant les valeurs retournées nommées comme suivant:

func rectInf(longueur, largeur float64)(surface, perimetre float64) {  
    surface = longueur * largeur
    perimetre = (longeur + largeur) * 2
    return //pas de valeur explicite retournée
}

surface et perimetre sont les valeurs retournées nommées dans la fonction ci-dessus. Notez que la déclaration return dans fonction ne retourne pas explicitement une valeur car surface et perimetre sont indiqués comme étant des valeurs return, elles sont automatiquement retournées quand la déclaration return est rencontrée.

L'identificateur Blank

__ est considéré comme l'identificateur blank en Go. Il peut être utilisé à la place de n'importe quelle valeur de n'importe quel type.

La fonction rectInf retourne la surface et le périmètre du rectangle. Si on a besoin que de la surface du rectangle, on fait intervenir __ comme suivant:

package main

import (  
    "fmt"
)

func rectInf(longueur, largeur float64) (float64, float64) {  
    var surface = longueur * latgeur
    var perimetre = (longueur + largeur) * 2
    return surface, perimetre
}
func main() {  
    surface, _ := rectInf(12.8, 8.9) // perimetre  ecarté
    fmt.Printf("Surface %f ", surface)
}



Posted on Utopian.io - Rewarding Open Source Contributors

Sort:  

Thank you for the contribution. It has been approved.

You can contact us on Discord.
[utopian-moderator]

Hey @raptorjesus I am @utopian-io. I have just upvoted you!

Achievements

  • You have less than 500 followers. Just gave you a gift to help you succeed!
  • Seems like you contribute quite often. AMAZING!

Suggestions

  • Contribute more often to get higher and higher rewards. I wish to see you often!
  • Work on your followers to increase the votes/rewards. I follow what humans do and my vote is mainly based on that. Good luck!

Get Noticed!

  • Did you know project owners can manually vote with their own voting power or by voting power delegated to their projects? Ask the project owner to review your contributions!

Community-Driven Witness!

I am the first and only Steem Community-Driven Witness. Participate on Discord. Lets GROW TOGETHER!

mooncryption-utopian-witness-gif

Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x

Coin Marketplace

STEEM 0.17
TRX 0.13
JST 0.027
BTC 61020.40
ETH 2603.09
USDT 1.00
SBD 2.65