Golang 本身十分轻量级,运行效率极高,同时对并发编程有着原生的支持,从而能更好的利用多核处理器。 这使得Golang对微服务开发具有先天的优势

api 调用命令行执行
fmtfmt.Scanfmt.Scanffmt.Scanln

fmt.Scan

函数调用语法:

func Scan(a ...interface{}) (n int, err error)

Scan空白符分隔函数参数成功扫描数据个数执行遇到的任何错误

具体代码示例如下:

func main() {
    var (
        name    string
        age     int
        is_marry bool
    )
    
    fmt.Scan(&name, &age, &is_marry)
    fmt.Printf("获取结果 name:%s age:%d is_marry:%t \n", name, age, is_marry)
}
复制代码
韩韩、18、false
$ ./scan_demo 
韩韩 18 false
获取结果 name:韩韩 age:18 is_marry:false
复制代码

fmt.Scan从命令行输入中扫描用户输入的数据,将以空白符分隔的数据分别存入指定的参数。

fmt.Scanf

函数调用语法:

func Scanf(format string, a ...interface{}) (n int, err error)

Scanfformat参数空白符分隔的值成功扫描数据个数执行遇到的任何错误

代码示例如下:

func main() {
    var (
        name    string
        age     int
        is_marry bool
    )
    
    fmt.Scanf("1:%s 2:%d 3:%t", &name, &age, &is_marry)
    fmt.Printf("扫描结果 name:%s age:%d is_marry:%t \n", name, age, is_marry)
}
复制代码

将上面代码编译执行后,在终端按照指定的格式依次输入 韩韩、18、false。

$ ./scan_demo 
1:韩韩 2:18 3:false
获取结果 name:韩韩 age:18 is_marry:false
复制代码

fmt.Scanf不同于fmt.Scan简单的以空格作为输入数据的分隔符,fmt.Scanf为输入数据指定了具体的输入内容格式,只有按照格式输入数据才会被扫描并存入对应变量。

fmt.Scanln

函数调用语法:

func Scanln(a ...interface{}) (n int, err error)

成功扫描数据个数执行遇到的任何错误

具体代码示例如下:

    func main() {
        var (
            name    string
            age     int
            is_marry bool
        )
        fmt.Scanln(&name, &age, &is_marry)
        fmt.Printf("获取结果 name:%s age:%d is_marry:%t \n", name, age, is_marry)
    }
复制代码

将上面代码编译执行后,在终端依次输入韩韩、18、false使用空格分隔。

$ ./scan_demo 
韩韩 18 false
获取结果 name:韩韩 age:18 is_marry:false
复制代码

fmt.Scanln遇到回车就结束扫描了,这个比较常用。

Fscan系列

fmt.Scan、fmt.Scanf、fmt.Scanln并不从命令行io.Reader
func Fscan(r io.Reader, a ...interface{}) (n int, err error)
func Fscanln(r io.Reader, a ...interface{}) (n int, err error)
func Fscanf(r io.Reader, format string, a ...interface{}) (n int, err error)
复制代码

Sscan系列

fmt.Scan、fmt.Scanf、fmt.Scanln并不从命令行指定字符串
func Sscan(str string, a ...interface{}) (n int, err error)
func Sscanln(str string, a ...interface{}) (n int, err error)
func Sscanf(str string, format string, a ...interface{}) (n int, err error)
复制代码