Dans Go, vous pouvez lire plusieurs nombres dans un tableau ou une tranche à l'aide de la fonction fmt.Fscan. Cependant, vous pouvez rencontrer une erreur lorsque vous essayez de numériser directement dans une tranche. En effet, la fonction fmt.Fscan ne prend pas automatiquement en charge l'analyse des tranches.
Pour résoudre ce problème, vous pouvez créer une fonction utilitaire qui regroupe les adresses de tous les éléments de tranche dans un tableau. Voici comment procéder :
func packAddrs(n []int) []interface{} { p := make([]interface{}, len(n)) for i := range n { p[i] = &n[i] } return p }
Une fois que vous disposez de la fonction utilitaire, vous pouvez l'utiliser pour numériser une tranche entière dans un tableau :
numbers := make([]int, 2) n, err := fmt.Fscan(os.Stdin, packAddrs(numbers)...) fmt.Println(numbers, n, err)
À des fins de test, vous peut utiliser fmt.Sscan pour scanner une chaîne dans la tranche :
numbers := make([]int, 5) n, err := fmt.Sscan("1 3 5 7 9", packAddrs(numbers)...) fmt.Println(numbers, n, err)
Sortie (essayez-le en déplacement Aire de jeux) :
[1 3 5 7 9] 5 <nil>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!