go语言Scan-Scanln-Scanf的区别

Go / 510人浏览 / 0人评论

go语言Scan-Scanln-Scanf的区别及使用案例

go语言Scan、Scanln、Scanf的区别

fmt.Scan

package main

import "fmt"

func main() {

    var username string
    var password string
    fmt.Println("请输入用户名和密码:")

    // 如果使用Scan时,会提示用户输入
    // 用户输入完用户名和密码成之后,会返回两个值:count,用户输入了几个值;err:用户输入错误则是错误信息
    _, err := fmt.Scan(&username, &password)

    if err == nil {
        fmt.Println(username, password)
    } else {
        fmt.Println("用户输入数据错误", err)
    }

    // 请注意:fmt.Scan 要求输入两个值,必须输入两个,否则他会一直等待,除非退出程序执行

}

fmt.Scanln

package main

import "fmt"

func main() {

    var username string
    var password string
    fmt.Println("请输入用户名和密码:")

    // 如果使用Scanln时,会提示用户输入
    // 用户输入完用户名和密码成之后,会返回两个值:count,用户输入了几个值;err:用户输入错误则是错误信息
    _, err := fmt.Scanln(&username, &password)

    if err == nil {
        fmt.Println(username, password)
    } else {
        fmt.Println("用户输入数据错误", err)
    }

    // 请注意:fmt.Scanln 不等待是否输入,回车直接往下执行,没输入就会提示错误信息

}

fmt.Scanf

package main

import "fmt"

func main() {

    var username string

    var password string

    fmt.Println("请输入用户名和密码:")

    // 如果使用Scanf时,会提示用户输入

    _, _ = fmt.Scanf("输入的用户名是:%s 输入的密码是:%s", &username, &password)

    fmt.Println(username, password)

    // fmt.Scanf 百分号占位符提取用户输入的信息
}

打印输出

请输入用户名和密码:
输入的用户名是:wang 输入的密码是:pwd
wang pwd

读取输入全部

package main

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

func main() {

    reader := bufio.NewReader(os.Stdin)

    line, _, _ := reader.ReadLine()

    result := string(line)

    fmt.Println(result)

}

转载注明:

0 条评论

还没有人发表评论

发表评论 取消回复

记住我的信息,方便下次评论
有人回复时邮件通知我