La lecture d'un entier sur l'entrée standard
Comment puis-je utiliser le fmt.Scanf
fonction en Aller pour obtenir un nombre entier d'entrée à partir de l'entrée standard?
Si cela ne peut être fait à l'aide de fmt.Scanf
, quelle est la meilleure façon de lire un entier?
Vous devez vous connecter pour publier un commentaire.
http://golang.org/pkg/fmt/#Scanf
Toutes les bibliothèques incluses dans le jeu de Go sont bien documentés.
Cela étant dit, je crois
fait le tour
&i
et pas seulementi
comme dansfmt.Printf("%v", i)
?i
est juste la valeur de l'entier dansi
,&i
est un pointeur versi
.scanner := bufio.NewScanner(os.Stdin)
if err != nil { log.Fatal(err) }
sinon, il serait de jeter une erreur que vous avez déclaréerr
et pas utiliséUne alternative qui peut être un peu plus concis est simplement utiliser
fmt.Scan
:Cette utilise la réflexion sur le type de l'argument de découvrir de quelle façon l'entrée doit être analysé.
http://golang.org/pkg/fmt/#Scan
Voici mon "IO Rapide" méthode de lecture des nombres entiers positifs. Il pourrait être amélioré avec bitshifts et de la pose de la mémoire à l'avance.
Golang de l'esf.Le balayage est plus simple que Golang de l'esf.Scanf (qui est plus simple que Clang scanf)
Si l'esf.Analyse des erreurs c'est à dire si non nul, log & retour
1 Lire une seule variable:
2 Lecture de plusieurs variables:
Bonne chance
Exemple: http://www.sortedinf.com/?q=golang-in-1-hour
Vous pouvez utiliser
fmt.Scanf
avec un spécificateur de format. Le spécificateur de format pour l'entier est %d. Ainsi, vous pouvez utiliser l'entrée standard comme ci-dessous.ou d'autre, vous pouvez utiliser
fmt.Scan
oufmt.Scanln
comme ci-dessous.