Comment utiliser la fonction fmt.Scanf
dans Go pour obtenir une entrée entière à partir de l'entrée standard ?
Si cela ne peut pas être fait en utilisant fmt.Scanf
, quelle est la meilleure façon de lire un entier unique ?
Comment utiliser la fonction fmt.Scanf
dans Go pour obtenir une entrée entière à partir de l'entrée standard ?
Si cela ne peut pas être fait en utilisant fmt.Scanf
, quelle est la meilleure façon de lire un entier unique ?
http://golang.org/pkg/fmt/#Scanf
Toutes les bibliothèques incluses dans Go sont bien documentées.
Cela étant dit, je crois
func main() {
var i int
_, err := fmt.Scanf("%d", &i)
}
fait l'astuce
Golang fmt.Scan est plus simple que Golang fmt.Scanf (ce qui est plus simple que Clang scanf)
Si les erreurs fmt.Scan, c'est-à-dire si elles ne sont pas nulles, enregistrez et renvoyez
import (
"fmt"
"log"
)
var i int
if _, err := fmt.Scan(&i); err != nil {
log.Print(" Scan for i failed, due to ", err)
return
}
fmt.Println(i)
import (
"fmt"
"log"
)
var i, j, k int
if _, err := fmt.Scan(&i, &j, &k); err != nil {
log.Print(" Scan for i, j & k failed, due to ", err)
return
}
fmt.Println(i, j, k)
Bonne chance !
Exemple de : http://www.sortedinf.com/?q=golang-in-1 hour
Voici ma méthode "Fast IO" pour lire des entiers positifs. Il pourrait être amélioré avec des décalages binaires et la mise en page de la mémoire à l'avance.
package main
import (
"io/ioutil"
"bufio"
"os"
"strconv"
)
func main() {
out := bufio.NewWriter(os.Stdout)
ints := getInts()
var T int64
T, ints = ints[0], ints[1:]
..
out.WriteString(strconv.Itoa(my_num) + "\n")
out.Flush()
}
}
func getInts() []int64 {
//assumes POSITIVE INTEGERS. Check v for '-' if you have negative.
var buf []byte
buf, _ = ioutil.ReadAll(os.Stdin)
var ints []int64
num := int64(0)
found := false
for _, v := range buf {
if '0' <= v && v <= '9' {
num = 10*num + int64(v - '0') //could use bitshifting here.
found = true
} else if found {
ints = append(ints, num)
found = false
num = 0
}
}
if found {
ints = append(ints, num)
found = false
num = 0
}
return ints
}
Vous pouvez utiliser fmt.Scanf
avec un spécificateur de format. Le format spécifié pour l'entier est %d. Vous pouvez donc utiliser une entrée standard comme ci-dessous.
func main() {
var someVar int
fmt.Scanf("%d", &someVar)
}
Sinon, vous pouvez utiliser fmt.Scan
ou fmt.Scanln
comme ci-dessous.
func main() {
var someVar int
fmt.Scanln(&someVar)
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.