Les Packages (partie I)
Qu'est ce que c'est un package?
Les packages sont utilisés pour organiser les codes sources pour une réutilisation efficace et une lisibilité meilleure.Les packages offrent une compartimentation du code, par conséquent, il devient plus facile de maintenir les applications en go.
Par exemple, on veut créer une application en go qui fait le traitement d'une image et qui offrent des options telles que recadrer, améliorer la netteté d'une image et d'autres options. Pour organiser cette application, on va regrouper tout le code relatif à une option dans un package. L'avantage est qu'une option pourrait faire appel à des fonctionnalités d'une autre option, pour cela, il suffit d'importer le package de l'option en question, par conséquent, le code devient plus simple à réutiliser.
La fonction main et main package
Toute application go executable doit contenir une fonction main. Cette fonction est le point de départ pour l'exécution. La fonction main doit être dans le main package.
La ligne de code qui indique qu'un fichier source particulier appartient à un package est package packagename
, cela doit être dans la première ligne de tout fichier source en go.
On va créer une fonction main et un main package pour notre application. On crée un dossier dans le dossier src du go workspace et on le nomme geometrie
, puis on crée un fichier geometrie.go
dans le dossier geometrie
On va écrire le code suivant dans geometrie.go
//geometrie.go
package main
import "fmt"
func main() {
fmt.Println("les propriétés d'une forme géométrique")
}
La ligne du code package main
indique que le fichier appartient au main package. La déclaration import "packagename"
est utilisée pour importer un package existant. Dans ce cas là, on importe le package fmt
qui contient la méthode Println, puis il y'a une fonction main qui affiche les propriétés d'une forme géométrique
On compile le programme ci-dessus en tapant go install geometrie
.Cette commande cherche dans le dossier geometrie le fichier avec la fonction main. Dans ce cas,geometrie.go
est trouvé, il est alors compilé et un binaire nommé geometrie (geometrie.exe dans le cas de windows) est générée dans le dossier bin de workspace. La structure du workspace serait comme suivante:
src
geometrie
gemometrie.go
bin
geometrie
On exécute le programme ci-dessus en tapant workspacepath/bin/geometrie
, on remplace workspacepath
par le chemin d'accès du go workspace. Cette commande exécute le binaire geometrie
dans le dossier bin. Vous devez avoir comme sortie les propriétés d'une forme géométrique
Création d'un package personnalisé
On va structurer le code de telle façon que toutes les fonctionnalités relatives à un rectangle soient dans le package rectangle
.
On va créer un package personnalisé rectangle
qui contient des fonctions pour déterminer la surface et la diagonale d'un rectangle.
Les fichiers sources qui appartiennent à ce package doivent être placés dans des dossiers séparés. C'est une convention en Go pour donner le même nom du package à ce dossier.
On va créer un dossier qu'on va nommer rectangle
dans le dossier geometrie
. Tous les fichiers qui se trouvent dans le dossier rectangle
doivent commencer par la ligne package rectangle
.
On crée un fichier rectpropos.go
dans le dossier rectangle qu'on vient de créer et on ajoute le code suivant.
//rectprops.go
package rectangle
import "math"
func Surface(len, wid float64) float64 {
surface := len * wid
return surface
}
func Diagonal(len, wid float64) float64 {
diagonal := math.Sqrt((len * len) + (wid * wid))
return diagonal
}
Dans le code ci-dessus, on a créé deux fonctions qui calculent Surface
et Diagonal
. On a importé la fonction Sqrt
qui se trouve dans le package math
.
Les noms des fonctions doivent toujours commencer par des majuscules .
Importer un package personnalisé
Pour utiliser un package personnalisé, on doit d'abord l'importer. import
est le syntaxe pour importer un package. On doit indiquer le chemin d'accès au package personnalisé tout en respectant que le dossier src
soit dans le workspace. La structure courante du dossier est:
src
geometrie
geometrie.go
rectangle
rectprops.go
La ligne import "geometrie/rectangle"
va importer le package rectangle.
On va ajouter le code suivant à geometrie.go:
//geometrie.go
package main
import (
"fmt"
"geometrie/rectangle" //importer le package personnalisé
)
func main() {
var rectLen, rectWidth float64 = 6, 7
fmt.Println("les propriétés d'une forme géométrique")
/*la fonction Surface du package rectangle est utilisée
*/
fmt.Printf("surface du rectangle %.2f\n", rectangle.Area(rectLen, rectWidth))
/*la fonction Diagonal du package rectangle est utilisée
*/
fmt.Printf("la diagonale du rectangle %.2f ",rectangle.Diagonal(rectLen, rectWidth))
}
Le code ci-dessus importe le package rectangle
et utilise les fonctions Surface
et Diagonal
de ce package pour trouver la surface et la diagonale d'un rectangle. Le format *.2f
indique en Printf qu'on se contentera de deux chiffres après la virgule. La sortie de l'application est:
les propriétés d'une forme géométrique
area of rectangle 42.00
diagonal of the rectangle 9.22
Posted on Utopian.io - Rewarding Open Source Contributors
💙 Great post. Very good writing,i like this post 💙
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Thank you for the contribution. It has been approved.
You can contact us on Discord.
[utopian-moderator]
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hey @raptorjesus I am @utopian-io. I have just upvoted you!
Achievements
Suggestions
Get Noticed!
Community-Driven Witness!
I am the first and only Steem Community-Driven Witness. Participate on Discord. Lets GROW TOGETHER!
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
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit