Aujourd'hui, nous allons voir comment lire des fichiers en Go et comment convertir le contenu en instance de Go struct!
1 - Comment lire une liste de fichiers dans un dossier
Premièrement, comment lire une liste de fichiers dans un dossier?
Avec la librairie io/ioutil
c'est très simple. L'exemple suivant vous montre qu'en quelques lignes de code, vous serez capables de lister l'ensemble des fichiers se trouvant dans un dossier et voir pour chacun d'entre eux si c'est un dossier ou non.
package main
import (
"io/ioutil"
"log"
)
...
files, err := ioutil.ReadDir("./chemin/vers/un/dossier")
if err != nil {
log.Fatal(err)
}
for _, file := range files {
fmt.Println(file.Name(), file.IsDir())
}
...
2 - Comment lire un fichier ?
Toujours avec la librairie io/outil
, en appelant sa méthodee ReadFile
on obtient le contenu du fichier et une potentielle erreur si quelque chose d'imprévu s'est passé ou si le fichier n'est pas présent ou lisible.
content, err := ioutil.ReadFile("file_name.txt")
if err != nil {
log.Fatal(err)
}
3 - Convertir un fichier JSON en instance de Go Struct
Maintenant que l'on sait lire un fichier, on va voir comment convertir un contenu JSON en instance de Go Struct.
Pour commencer, il faut qu'on définisse dans la Go Struct le mapping entre la structure et son format JSON.
Pour chacun des champs, on va ajouter un paramètre json
qui va permettre de faire le lien entre le JSON et la structure.
type Creature struct {
Name string `json:"Name"`
Tags []string `json:"Tags"`
HP CreatureHP `json:"HP"`
}
type CreatureHP struct {
Value int `json:"Value"`
Notes string `json:"Notes"`
}
A présent que nous avons la structure Creature
de prête, on peut effectuer la transformation avec le code suivant:
// Déclaration de l'instance de la structure que l'on veut remplir
creature := bestiary.Creature{}
// Remplissage de l'instance avec le contenu du fichier JSON grâce au mapping défini plus tôt
err = json.Unmarshal(content, &creature)
// Vérification d'une éventuelle erreur
if err != nil {
panic(err)
}
Et voilà! Maintenant vous savez comment faire pour pouvoir le réutiliser dans votre application Golang!
J'espère que ça vous aidera! 🍺🍺
Top comments (0)