Maison >développement back-end >Golang >Comment numériser dans GoLang

Comment numériser dans GoLang

Susan Sarandon
Susan Sarandonoriginal
2025-01-05 14:51:44496parcourir

How to Scan in GoLang

Dans Go (golang), le package fmt fournit plusieurs fonctions pour analyser les entrées de la console ou d'autres sources d'entrée.

Pour moi, ceux-ci ont toujours été utiles lors des tests et dans bien d'autres domaines. Et jusqu'à présent, je travaille habituellement avec 4 fonctions lors de la numérisation.

Explorons quelques-uns d'entre eux et voyons comment, pourquoi et quand l'utiliser.


1. fmt.Scan

  • Objectif : Lit les entrées séparées par des espaces à partir de l'entrée standard (console).
  • Arrête la lecture : S'arrête sur la première nouvelle ligne ou espace.
  • Variables multiples : Peut lire plusieurs variables en un seul appel.
  • Retours : Nombre d'éléments analysés avec succès et erreur le cas échéant.

Exemple :

package main

import (
    "fmt"
)

func main() {
    var name string
    var age int
    fmt.Print("Enter your name and age: ")
    fmt.Scan(&name, &age) // Reading input separated by space
    fmt.Printf("Hello %s, you are %d years old.\n", name, age)
}

Exemple de saisie :

Alice 25

Sortie :

Hello Alice, you are 25 years old.

2. fmt.Scanln

  • Objectif : Lit l'entrée jusqu'à ce qu'une nouvelle ligne (n) soit rencontrée.
  • Arrête la lecture : S'arrête sur une nouvelle ligne au lieu d'un espace.
  • Variables multiples : Peut lire plusieurs variables mais s'arrête si elle atteint la nouvelle ligne en premier.
  • Retours : Nombre d'éléments analysés avec succès et erreur le cas échéant.

Exemple :

package main

import (
    "fmt"
)

func main() {
    var name string
    var age int
    fmt.Print("Enter your name and age: ")
    fmt.Scanln(&name, &age) // Reads until newline is encountered
    fmt.Printf("Hello %s, you are %d years old.\n", name, age)
}

Exemple de saisie :

Alice 25

Sortie :

Hello Alice, you are 25 years old.

3. fmt.Scanf

  • Objectif : Lit les entrées formatées à l'aide de spécificateurs de format (comme %s, %d, %f).
  • Arrête la lecture : S'arrête en fonction du format spécifié.
  • Variables multiples : Peut lire plusieurs variables avec un contrôle précis à l'aide de spécificateurs de format.
  • Retours : Nombre d'éléments analysés avec succès et erreur le cas échéant.

Exemple :

package main

import (
    "fmt"
)

func main() {
    var name string
    var age int
    fmt.Print("Enter your name and age (formatted): ")
    fmt.Scanf("%s %d", &name, &age) // Reads formatted input
    fmt.Printf("Hello %s, you are %d years old.\n", name, age)
}

Exemple de saisie :

Alice 25

Sortie :

Hello Alice, you are 25 years old.

4. bufio.NewReader (pour la gestion avancée des entrées)

  • Objectif : Fournit des capacités de lecture d'entrée plus avancées par rapport à fmt.
  • Arrête la lecture : Permet de lire une ligne entière, espaces compris.
  • Variables multiples : Lit l'entrée sous la forme d'une seule chaîne et peut ensuite être divisée davantage si nécessaire.
  • Renvoie : La ligne d'entrée complète sous forme de chaîne.

Exemple :

package main

import (
    "bufio"
    "fmt"
    "os"
    "strings"
)

func main() {
    reader := bufio.NewReader(os.Stdin)
    fmt.Print("Enter your name and age: ")
    input, _ := reader.ReadString('\n') // Reads entire line including spaces
    input = strings.TrimSpace(input)    // Trim newline and spaces
    fmt.Printf("You entered: %s\n", input)
}

Exemple de saisie :

Alice 25

Sortie :

package main

import (
    "fmt"
)

func main() {
    var name string
    var age int
    fmt.Print("Enter your name and age: ")
    fmt.Scan(&name, &age) // Reading input separated by space
    fmt.Printf("Hello %s, you are %d years old.\n", name, age)
}

? Tableau récapitulatif :

Function Purpose Stops Reading At Supports Formatting? Multiple Variables? Use Case
fmt.Scan Basic scanning Whitespace Simple input without newline
fmt.Scanln Scans until newline Newline (n) Input until newline
fmt.Scanf Formatted input scanning Controlled by format Precise formatted input
bufio.NewReader Advanced input handling Customizable Large input with spaces
Fonction Objectif Arrête de lire à Prend en charge le formatage ? Variables multiples ? Cas d'utilisation
ête> fmt.Scan Analyse de base Espaces ❌ ✅ Saisie simple sans nouvelle ligne fmt.Scanln Analyse jusqu'à la nouvelle ligne Nouvelle ligne (n) ❌ ✅ Saisie jusqu'à la nouvelle ligne fmt.Scanf Analyse des entrées formatées Contrôlé par format ✅ ✅ Saisie formatée avec précision bufio.NewReader Gestion avancée des entrées Personnalisable ✅ ❌ Grande entrée avec des espaces

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