Maison >développement back-end >Golang >Comment numériser efficacement plusieurs numéros dans une tranche en Go ?

Comment numériser efficacement plusieurs numéros dans une tranche en Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-17 09:37:25924parcourir

How to Efficiently Scan Multiple Numbers into a Slice in Go?

Analyse de nombres en tranches dans Go

Lors de la lecture de plusieurs nombres à partir de l'entrée standard dans Go, vous pouvez attribuer des valeurs à des variables individuelles :

numbers := make([]int, 2)
fmt.Fscan(os.Stdin, &numbers[0], &numbers[1])

Cependant, vous souhaiterez peut-être simplifier le processus et lire directement dans une tranche. Le package fmt ne prend pas en charge l'analyse en tranches, mais la fonction utilitaire suivante peut aider :

func packAddrs(n []int) []interface{} {
    p := make([]interface{}, len(n))
    for i := range n {
        p[i] = &n[i]
    }
    return p
}

Cette fonction crée une tranche d'adresses pour chaque élément de la tranche d'entrée. Avec cette fonction, vous pouvez numériser une tranche comme celle-ci :

numbers := make([]int, 2)
n, err := fmt.Fscan(os.Stdin, packAddrs(numbers)...)
fmt.Println(numbers, n, err)

Tester cela avec fmt.Sscan() :

numbers := make([]int, 5)
n, err := fmt.Sscan("1 3 5 7 9", packAddrs(numbers)...)
fmt.Println(numbers, n, err)

Sortie :

[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