Maison > développement back-end > Golang > Comment puis-je lire efficacement plusieurs numéros dans une tranche Go à l'aide de fmt.Fscan ?

Comment puis-je lire efficacement plusieurs numéros dans une tranche Go à l'aide de fmt.Fscan ?

Patricia Arquette
Libérer: 2024-12-16 21:53:15
original
703 Les gens l'ont consulté

How Can I Efficiently Read Multiple Numbers into a Go Slice Using 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])
Copier après la connexion

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
}
Copier après la connexion

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)
Copier après la connexion

Par exemple, considérons l'entrée de test suivante :

1 3 5 7 9
Copier après la connexion

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>
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal