instrucciones fmt.Scan idioma ir

En el idioma si quieres ir get entrada del usuario, que va a utilizar el método de escaneo. exploración Hay muchos idiomas en la marcha de hoy nos dicen acerca de su uso y diferencias.

E imprimir similares, exploración también se divide en tres categorías:

  • Exploración, Scanf y Scanln: os.Stdin leen el texto de la entrada estándar (para obtener datos desde el terminal)
  • FSCAN, fscanf, Fscanln: io.Reader leer el texto de la interfaz designada (genérico)
  • Sscan, sscanf, Sscanln: (obtener datos de una cadena de cadena) cadena de parámetros lee de un texto

Escanear:

语法: func Scan(a ...interface{}) (n int, err error)
例:
func main() {
          var str string
          fmt.Printf("请输入内容:")
          fmt.Scan(&str)
          fmt.Printf("str: %s",str)
}
/* scan将碰到第一个空格或换行符之前的内容赋值给变量。如果
scan中有多个变量,变量值用空格或换行符分割。所以换行和空
格是不能存储到变量内的。
*/

scanf:

语法:func Scanf(format string, a ...interface{}) (n int, err error)
例:
func main() {
    var (
        name string
        age int
    )   
    fmt.Printf("请输入内容:")
    fmt.Scanf("name:%s age:%d",&name,&age)
    fmt.Printf("n: %s, a:%d",name,age)
}   

Scanln:

语法:func Scanln(a ...interface{}) (n int, err error)
例:
func main() {
    var str string
    fmt.Printf("请输入内容:")
    fmt.Scanln(&str)
    fmt.Printf("str: %s",str)
}       
//Scanln类似Scan,但在遇到换行符时会立刻停止扫描。

Resumen: Scan y Scanln sustancialmente la misma, la única diferencia es que cuando una pluralidad de variables cuando se lee, extremo Scanln directamente de nueva línea, el valor de entrada variable se ha leído el valor cero; espera de escaneado hasta que el valor de los parámetros de entrada satisface el número después del salto de línea va a terminar.

Sscan, sscanf, Sscanln

语法
func Sscan(str string, a ...interface{}) (n int, err error)
func Sscanf(str string, format string, a ...interface{}) (n int, err error)
func Sscanln(str string, a ...interface{}) (n int, err error)
例:
func main() {
    var i1,i2 int
    fmt.Sscan("100\n200",&i1,&i2)
    fmt.Printf("int1: %d,int2: %d", i1,i2)
}
//用法和scan基本一样,只是改成从字符串获取数据

FSCAN, fscanf, Fscanln:

func Fscan(r io.Reader, a ...interface{}) (n int, err error)
func Fscanf(r io.Reader, format string, a ...interface{}) (n int, err error)
func Fscanln(r io.Reader, a ...interface{}) (n int, err error)
/*
只要对象实现了read方法(满足io.Reader接口),就能使用此方法。上面提到的Scan,Scanf,Scanln和Sscan,Sscanf,Sscanln都是有此方法封装而来。
使用方法和上面相同,只不过要多指定一个实现read方法的源。
*/

Debido a que los métodos anteriores son que los espacios separados, por lo que los datos no pueden ser adquiridos con espacios. Si usted tiene esta necesidad, se puede utilizar para lograr bufio. De la siguiente manera:

func main() {
    reader := bufio.NewReader(os.Stdin)
    fmt.Print("输入信息:")
    input, _ := reader.ReadString('\n')
    fmt.Printf("n: %s",input)
}
//这样会将换行符之前的数据全部赋值给input

Supongo que te gusta

Origin blog.51cto.com/14601432/2482961
Recomendado
Clasificación