Maison >développement back-end >Golang >Comment puis-je lire efficacement plusieurs numéros dans une tranche Go à l'aide de fmt.Fscan ?
Lecture de nombres dans des tranches à l'aide de fmt.Fscan
Pour lire plusieurs nombres dans un tableau ou une tranche dans Go à l'aide de fmt.Fscan, il est pratique courante de déclarer des variables individuelles et de fournir leurs adresses comme arguments :
numbers := make([]int, 2) fmt.Fscan(os.Stdin, &numbers[0], &numbers[1])
Cependant, il n'est pas possible de directement passez la tranche elle-même en tant que paramètre à fmt.Fscan. Pour simplifier ce processus, vous pouvez créer une fonction utilitaire qui regroupe les adresses des éléments de tranche :
func packAddrs(n []int) []interface{} { p := make([]interface{}, len(n)) for i := range n { p[i] = &n[i] } return p }
En utilisant cette fonction, vous pouvez désormais numériser une tranche entière avec fmt.Fscan :
numbers := make([]int, 2) n, err := fmt.Fscan(os.Stdin, packAddrs(numbers)...) // ... unpacks the slice addresses fmt.Println(numbers, n, err)
Par exemple, considérons l'entrée de test suivante :
1 3 5 7 9
Utilisation de fmt.Sscan pour les tests fins :
numbers := make([]int, 5) n, err := fmt.Sscan("1 3 5 7 9", packAddrs(numbers)...) fmt.Println(numbers, n, err) // Output: [1 3 5 7 9] 5 <nil>
Cela montre comment lire efficacement plusieurs nombres dans une tranche à l'aide de fmt.Fscan.
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!