viceversa procedimiento para número numero fracciones fraccion exacto enteros ejercicios decimales cuál convierte convertir convertidor con como go stdin

go - procedimiento - Lectura de un entero a partir de la entrada estándar



convertir fracciones a decimales y viceversa (4)

Aquí está mi método "Fast IO" para leer enteros positivos. Se podría mejorar con cambios de bits y disposición de memoria con antelación.

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 }

¿Cómo uso la función fmt.Scanf en Go para obtener una entrada entera de la entrada estándar?

Si esto no se puede hacer usando fmt.Scanf , ¿cuál es la mejor manera de leer un solo entero?


Golang fmt.Scan es más simple que Golang fmt.Scanf (que es más simple que Clang scanf)

If fmt.Scan errors, es decir, si no es nulo, log y devuelve

1 variable única de lectura:

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)

2 Leer múltiples variables:

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)

La mejor de las suertes

Ejemplo de: http://www.sortedinf.com/?q=golang-in-1-hour


Una alternativa que puede ser un poco más conciso es simplemente usar fmt.Scan :

package main import "fmt" func main() { var i int fmt.Scan(&i) fmt.Println("read number", i, "from stdin") }

Esto utiliza la reflexión sobre el tipo de argumento para descubrir cómo debe analizarse la entrada.

http://golang.org/pkg/fmt/#Scan


http://golang.org/pkg/fmt/#Scanf

Todas las bibliotecas incluidas en Go están bien documentadas.

Dicho eso, creo

func main() { var i int _, err := fmt.Scanf("%d", &i) }

Hace el truco