Étendre les possibilités avec des bibliothèques externes

Dans un article précédent, je vous expliquais comment débuter avec go et créer un premier programme. Golang est livré avec une bibliothèque standard très complète. Nous avons vu un exemple avec le paquet fmt. Un coup d'oeil à la page des paquets disponibles nous permet de voir, par exemple, que la librairie standard contient de quoi gérer ces formats d'images :

  • GIF
  • JPEG
  • PNG

Cependant, imaginons que nous souhaitions créer un graphique en SVG. Dans ce cas, il va falloir récupérer une bibliothèque tierce. Pas de panique, une bibliothèque existe. Voici comment procéder.

Définir l'endroit où les librairies tierces seront stockées

Il faut définir une variable d'environnement du nom de GOPATH. Dans mon cas (je développe sous Windows), je l'ai fait pointer sur c:\GoCode\.

Comprendre le fonctionnement de la commande go get

Go est capable de récupérer et d'installer des bibliothèques à partir de leurs sources si elles sont disponibles dans un repository publique (tel que github ou code.google.com). Il faut cependant que le logiciel de gestion des sources soit installé sur votre ordinateur. Github utilise git tandis que google peut utiliser subversion ou mercurial. Une fois que votre environnement est prêt, lancez les commandes :

go get github.com/ajstarks/svgo/
go install github.com/ajstarks/svgo/

Qui ont pour rôle de :

  • Télécharger les sources de la bibliothèque de gestion des graphiques SVG dans le répertoire désigné par GOPATH.
  • Compiler les sources de la bibliothèque svgo afin d'accélérer les prochaines compilations et vérifier que l'étape précédente s'est bien passée.

Si vous voulez en savoir plus sur ces commandes ou si vous êtes bloqué par le proxy de votre entreprise (avec bitbucket par exemple), vous pouvez lire mon article qui explique ces points plus spécifiquement.

Un programme de démonstration

Créez le fichier source de notre programme de génération de SVG (par exemple svg.go). Notez la ligne d'import (dans la section import) qui indique que nous souhaitons utiliser cette bibliothèque.

package main

import (
    "github.com/ajstarks/svgo"
    "os"
)

func main() {
	fileSVG, err := os.Create("./test.svg")
	if err != nil { panic(err) }
	defer fileSVG.Close() 
	width := 500
	height := 500
	canvas := svg.New(fileSVG)
	canvas.Start(width, height)
	canvas.Circle(width/2, height/2, 100)
	canvas.Text(width/2, height/2, "Hello, SVG", "text-anchor:middle;font-size:30px;fill:white")
	canvas.End()
}

Puis compiler les sources ou exécutez-le directement avec la commande :

go run svg.go

Ce programme génèrera un fichier test.svg dans le répertoire courant. Ce fichier nécessite un navigateur moderne tel que Chrome ou Firefox.

  • Exemple de fichier SVG géneré avec svgo

    Exemple de fichier SVG généré avec svg.go

Pour aller plus loin

Je vous conseille la lecture de mes articles :


Étiquettes :   installation   debuter   image 
Portrait de Benjamin BALET
Benjamin BALET
Consultant APM

Retrouvez mes cooordonées

Benjamin BALET sur viadeo






Vous aimerez aussi

Comment écrire du code Go ?

Traduction d'une partie des spécifications officielles du langage Go, cet article explique comment développer en Go.   Lire »

Les lois de la réflexion

Une traduction du blog officiel de golang expliquant le mécanisme de la réflexion en Go.   Lire »

Gobs le format natif d'échange de données en Go

Traduction d'un article du blog officiel expliquant comment échanger des données entre deux programmes golang grâce à un format natif   Lire »

Tests unitaires automatisés et couverture de test en go

Comment obtenir un rapport sur la couverture du code par les tests unitaires en golang ? Un exemple de code et de cas de test.   Lire »

Canaux et go routines avec ou sans état

Exemples d'utilisation du type chan et des go routines stateful et stateless   Lire »

Commentaires

Soyez le premier à commenter cet article

Publier un commentaires

Tous les commentaires sont soumis à modération. Les balises HTML sont pour la plupart autorisées. Les liens contextuels et intéressants sont en follow.

(requis)
(requis)
(requis, mais non publié)
(recommandé si vous souhaitez être publié)