Go 1.22

Par:
fredericmazue

jeu, 08/02/2024 - 14:17

Google a annoncé la disponibilité d'une nouvelle version de son langage maison : Go 1.22

Cette version apporte deux modifications aux boucles "for". Auparavant, les variables déclarées par une boucle "for" étaient créées une seule fois et mises à jour à chaque itération. Dans Go 1.22, chaque itération de la boucle crée de nouvelles variables, pour éviter les bugs accidentels de partage. Les outils d’aide à la transition décrits dans la proposition continuent de fonctionner de la même manière qu’ils le faisaient dans Go 1.21.

Les boucles "For" peuvent désormais s'étendre sur des nombres entiers. Par exemple :

package main

import "fmt"

func main() {
  for i := range 10 {
    fmt.Println(10 - i)
  }
  fmt.Println("go1.22 has lift-off!")
}

Voir les spécifications pour plus de détails.

Go 1.22 inclut un aperçu d'un changement de langue que Google envisagepour une future version de Go : les itérateurs range-over-function.

A remarquer encore, les commandes des workspaces peuvent désormais utiliser un répertoire vendor contenant les dépendances de l'espace de travail. Le répertoire est créé par go work vendor et est utilisé par les commandes de build lorsque l'indicateur -mod  est défini sur vendor, ce qui est la valeur par défaut lorsqu'un  répertoire d'espace vendor de travail est présent.

Notez que le contenu vendor du répertoire d'un espace de travail est différent de celui d'un seul module : si le répertoire à la racine d'un espace de travail contient également l'un des modules de l'espace de travail, son répertoire vendor peut contenir les dépendances soit de l'espace de travail, soit du module, mais pas les deux.

La note de version complète de Go 1.22 est ici.