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)
复制代码