Maison >développement back-end >Golang >Comment lire efficacement plusieurs nombres dans une tranche Go à partir d'une entrée standard ?

Comment lire efficacement plusieurs nombres dans une tranche Go à partir d'une entrée standard ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-29 05:29:10124parcourir

How to Efficiently Read Multiple Numbers into a Go Slice from Standard Input?

Lire plusieurs nombres dans Go Slice à partir de l'entrée standard

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!

Déclaration:
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