Go
Découvrons comment importer des fichiers en utilisant embed dans Go
Il existe plusieurs méthodes pour importer des fichiers dans Go. On peut, par exemple, lire un fichier en utilisant os.ReadFile(), ou bien importer le fichier en utilisant le paquet embed. Même si les usages diffèrent légèrement, l’utilisation du paquet embed permet d’inclure le fichier lors de la compilation, ce qui est utile pour le déploiement. Examinons simplement un exemple en créant un fichier txt comme suit : hello.txtHello, World! Maintenant, importons ce fichier en utilisant le paquet embed.
16 avril 2025
Comment envoyer des données de formulaire dans le corps en Golang
En travaillant, j’ai eu besoin d’utiliser une API externe. Contrairement aux API qui échangent généralement des JSON ou des XML, je devais échanger des données de formulaire. Dans mon cas, ayant traité cela avec JSP mais ne l’ayant pas beaucoup utilisé dans la pratique, cela faisait très longtemps que je n’avais pas utilisé les données de formulaire, donc je ne savais pas comment ça se passait en Go. J’ai décidé de faire quelques recherches et de me renseigner.
14 avril 2025
Rendre des graphiques Mermaid dans Hugo Blog
Mon blog technique utilise un moteur de template appelé Hugo. Hugo est un générateur de sites statiques qui convertit les fichiers Markdown en HTML. Le Markdown que nous utilisons couramment inclut une fonctionnalité appelée blocs de code. Le code Go ci-dessous est également affiché avec une belle coloration syntaxique : func main() { fmt.Println("Hello, World!") } Le code Java montre aussi la coloration syntaxique à travers des blocs de code.
6 mars 2025
Utiliser l'IA pour traduire tous les articles sur Hugo (feat. Comment mon blog a commencé à supporter 5 langues)
Objectif Avec les récents progrès de l’IA, j’ai commencé à utiliser Gemini dans mon travail. En voyant comment il gère si bien les données non structurées, je me suis souvenu des tâches laborieuses que j’avais faites auparavant. Cela dit, j’ai quelque chose que j’ai ressenti comme un devoir depuis longtemps : la traduction de mon blog. J’avais entendu dire qu’après une traduction, le nombre de lecteurs d’un blog augmente considérablement. Autrefois, j’avais pensé utiliser l’API Google Translate pour traduire, mais j’ai cédé à la paresse et je l’ai laissé tomber.
6 mars 2025
Gérez les états plus efficacement, découvrons les machines à états finis (FSM) avec Golang
Trop d’états ! En travaillant beaucoup dans l’industrie, on se rend compte qu’il y a un état pour chaque petite chose, aussi insignifiante soit-elle. Par exemple, il existe de nombreux états comme l’état de connexion de l’utilisateur, l’état de la commande, l’état du paiement, etc. Ces états sont généralement stockés dans du code ou des bases de données et utilisés pour exécuter des logiques différentes selon l’état.
22 février 2025
Automatisons l'exécution des tests Golang via Github Actions lors de l'ouverture d'une PR et générons un rapport
Où que ce soit, dans n’importe quelle langue, automatiser la construction ou le test pour les tests est essentiel. Bien sûr, vous pouvez effectuer et soumettre le test directement en local, mais comme il arrive souvent que les gens soumettent leur travail sans exécuter de tests, il est bon de ne pas trop dépendre du local. L’automatisation permet une utilisation à long terme et peut réduire le coût de la maintenance.
17 février 2025
Explorons le crawling avec Playwright en Golang
Il existe plusieurs façons de collecter des données, mais la plus courante est d’utiliser une technique appelée le crawling. Le terme crawling peut se traduire littéralement par “ramper”. Le web crawling consiste à naviguer sur le web pour collecter des informations. Outils On utilise souvent Python, non seulement pour sa simplicité, mais aussi parce qu’il existe de nombreuses bibliothèques spécialisées dans le crawling. Les outils les plus connus sont BeautifulSoup, Selenium, Scrapy, etc.
14 février 2025
Tester sans cache dans Golang
Lorsque vous testez en Golang, la vitesse des tests devient très rapide à partir de la deuxième exécution. 1ère exécution ok github.com/my/package/test 126.752s 2ème exécution ok github.com/my/package/test (cached) Lors de la première exécution, cela a pris plus de 2 minutes, mais lors de la deuxième exécution, le test s’est terminé très rapidement, sans même avoir le temps de mesurer le temps.
14 février 2025
Comprendre la différence entre log.Fatal() et panic() en Golang
“Dans ce cas, il semble préférable d’utiliser panic() plutôt que log.Fatal()” Récemment, alors que j’utilisais log.Fatal(), j’ai reçu ce type de retour d’information. Hmm? Je pensais que log.Fatal() était juste un meilleur moyen de journaliser les erreurs, non ? Bien que ce soit embarrassant, ce n’est que récemment que j’ai compris clairement la différence entre log.Fatal() et panic() en Golang, et je profite de cette opportunité pour clarifier cela.
11 février 2025
Créer un serveur résistant aux requêtes redondantes avec Singleflight en Golang
Récemment, mon entreprise a fermé et j’ai dû travailler temporairement en freelance. Heureusement, j’ai rencontré une personne exceptionnelle qui m’a appris plusieurs compétences sur Go et le web, l’une d’elles étant l’amélioration avec le package singleflight. Singleflight? Traduit littéralement en anglais, cela signifie “vol unique”. En réalité, il n’y a pas besoin de le comprendre de manière trop complexe, on peut juste voir cela comme la garantie d’une exécution unique.
10 février 2025
Ressentir Lombok en Golang
Lombok ? Lombok est une bibliothèque en Java qui réduit les codes répétitifs tels que les getter et setter. En Go, les tâches telles que les getters, setters ou constructeurs peuvent être très fastidieuses en raison de ses caractéristiques. Dans le cas de Java, il existe une bibliothèque pour automatiser ces tâches. Prenons un exemple en supposant que l’on crée un constructeur pour la structure suivante :
24 octobre 2023
Examen de la différence entre Type Alias et Named Type (Golang)
Les deux sont des méthodes pour redéfinir un type existant lors de la définition d’un type, et la méthode de définition est comme suit. type MyStruct struct { Name string Age int } func(m MyStruct) Print(){ fmt.Println(m.Name, m.Age) } type MyStructNamed MyStruct // Named Type type MyStructAlias = MyStruct // Type Alias Alias de Type Dans le cas d’un type alias, comme il attribue un alias à un type existant, il possède les mêmes méthodes que le type original.
13 octobre 2023
Résoudre le problème de corruption des caractères coréens dans un fichier exporté en csv depuis Golang
BOM Excel a besoin d’un BOM au début du fichier pour lire correctement les fichiers CSV encodés en UTF-8. BOM : Marque d’ordre d’octet (Byte Order Mark, BOM) est le caractère U+FEFF d’unicode, qui agit comme un nombre magique. Ajouté au début du document, il peut transmettre plusieurs informations au programme qui lit le texte. Dans le code Pour prévenir le problème de corruption des caractères coréens lorsque vous utilisez le csv en Golang, vous pouvez procéder comme suit :
23 septembre 2023
Utiliser les Templates dans Golang (Go Template)
Go Template Golang dispose d’une fonctionnalité appelée Go Template qui permet de lier ou de manipuler diverses données selon un format spécifié, pour les exporter sous forme de chaînes de caractères. Package text/template Il s’agit de deux bibliothèques standard pour gérer les templates basés sur du texte. Elles sont souvent utilisées pour générer du texte suivant un format spécifié ou une logique particulière. Un exemple d’utilisation du package text/template pour exporter du texte selon un format prédéfini est présenté ci-dessous. package main import ( "os" "log" "text/template" ) type Person struct { Name string Age int } func main() { t := template.New("hello") t, err = t.Parse("Hello {{.Name}}, you are {{.Age}} years old.\n") if err != nil { log.Error(err) } p := Person{Name: "GiraffeWithCode", Age: 27} t.Execute(os.Stdout, p) } Comme vous pouvez le voir dans le code, on peut facilement deviner que les champs Name et Age de la structure Person seront liés à chaque élément de la chaîne de template "Hello {{.Name}}, you are {{.Age}} years old.\n".
23 septembre 2023