Why reflection can be a smell, even in Go.

Reflection is often viewed as a Smell in Java, C#, etc. Even if Golang have interface{} in too many places, you are using a static typed language, how did you come not to know which type do you use? Some usages are perfectly legal, but it’s quite regularly a smell, especially when if multiply or the switch grows. Almost every time you see some typeof (Java) or some .(Type) (Go), you should search for an interface refactoring. ...

2022-01-11 · 3 min🇬🇧

Subtilité sur les tableaux supports des slices en Go

Si vous êtes un adepte des slices en Go voici une petite subtilité sur laquelle il faut faire attention. Code exemple Analyser dans votre tête le code suivant. On crée un slice puis un slice de slice et on modifie et ajoute des valeurs. Concentrez-vous sur la dernière instruction. Qu’affiche s1 et s2 ? package main import ( "fmt" ) func main() { s1 := make([]int, 3, 4) fmt.Println("s1:", s1) s2 := s1[1:2] fmt.Println("s2:", s2) fmt.Println("# s2[0] = 1") s2[0] = 1 fmt.Println("s1:", s1) fmt.Println("s2:", s2) fmt.Println("# append(s2, 2)") s2 = append(s2, 2) fmt.Println("s1:", s1) fmt.Println("s2:", s2) fmt.Println("# s2[1] = 9") s2[1] = 9 fmt.Println("s1:", s1) fmt.Println("s2:", s2) fmt.Println("# append(s2, 3)") s2 = append(s2, 3) fmt.Println("s1:", s1) fmt.Println("s2:", s2) fmt.Println("# s2[1] = 8") s2[1] = 8 fmt.Println("s1:", s1) fmt.Println("s2:", s2) fmt.Println("# append(s2, 4)") s2 = append(s2, 4) fmt.Println("s1:", s1) fmt.Println("s2:", s2) fmt.Println("# s2[1] = 7") s2[1] = 7 fmt.Println("s1:", s1) fmt.Println("s2:", s2) } Voici la sortie ...

2021-08-29 · 3 min🇫🇷

Les enums en Go, de zéro à héros

Présent dans beaucoup de langages, les énumérations, ou enums en anglais, ne sont pourtant pas un type de base du langage Go. Les concepteurs avares en mot clés (grand bien leur fasse) ont pourtant laisser une piste et les bonnes pratiques ont émergés. Faisons ensemble le tour du propriétaire avec un exemple d’enum des jours de la semaine. Implémentation naïve Si vous n’avez aucune idée de comment implémenter les enums en Go, vous allez probablement arriver à quelque chose comme ça. ...

2021-07-07 · 4 min🇫🇷