详解golang碎片整理之 fmt.Scan

 更新时间:2019年05月08日 09:13:06   作者:霍帅兵  
本文介绍了从golang语言中fmt包从标准输入获取数据的Scan系列函数、从io.Reader中获取数据的Fscan系列函数以及从字符串中获取数据的Sscan系列函数的用法,感兴趣的小伙伴们可以参考一下

本文介绍了从golang语言中fmt包从标准输入获取数据的Scan系列函数、从io.Reader中获取数据的Fscan系列函数以及从字符串中获取数据的Sscan系列函数的用法。

Scan系列

go语言fmt包下有fmt.Scan、fmt.Scanf、fmt.Scanln三个函数,可以在程序运行过程中从标准输入获取用户的输入。

fmt.Scan

语法

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

Scan 从标准输入扫描文本,读取由空白符分隔的值保存到传递给本函数的参数中,换行符视为空白符。

本函数返回成功扫描的数据个数和遇到的任何错误。如果读取的数据个数比提供的参数少,会返回一个错误报告原因。

代码示例

package main

import "fmt"
func main(){
 var (
  name string
  age int
  married bool
 )
 fmt.Scan(&name,&age,&married)
 fmt.Printf("扫描结果 name:%s age:%d married:%t\t",name,age,married)
}

将上述代码在终端运行,在终端依次输入 Alfred 、26、false使用空格分隔。

go run main.go
alfred 26 false
扫描结果 name:alfred age:26 married:false

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

fmt.Scanf

语法

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

Scanf从标准输入扫描文本,根据format参数指定的格式去读取由空白符分隔的值保存到传递给本函数的参数中。

本函数返回成功扫描的数据个数和遇到的任何错误。

代码实例

package main
import "fmt"
func main(){
var (
 name string
 age int
 married bool
)
fmt.Scanf("1:%s 2:%d 3:%t", &name,&age,&married)
fmt.Printf("扫描结果 name:%s age:%d married:%t", name,age,married)
}

将上面的代码编译后在终端执行,在终端按照指定的格式一次输入1:alfred 2:26 3:false 。

go run main.go
1:alfred 2:26 3:false
扫描结果 name:alfred age:26 married:false

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

例如,我们还是按照上个示例中以空格符分隔的方式输入,fmt.Scanf就不能正确扫描到输入的数据。

fmt.Scanln

语法

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

Scanln类似于Scan,它遇到换行才停止扫描。最后一个数据后面必须有换行或者到达结束位置。

本函数返回成功扫描的数据个数和遇到的任何错误。

代码示例

package main
import "fmt"
func main(){
 var (
  name string
  age int
  married bool
 )
 fmt.Scanln(&name,&age,&married)
 fmt.Printf("扫描结果 name:%s age:%d married:%t",name,age,married)
}

将上述代码编译后在终端执行,在终端依次输入alfred 26 false使用空格分隔。

go run main.go
alfred 26 false
扫描结果 name:alfred age:26 married:false

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

Fscan系列

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)

这几个函数功能类似于fmt.Scan 、fmt.Scanf、fmt.Scanln三个函数,只不过它们不是从标准输入中读取数据而是从io.Reader中读取数据。

Sscan系列

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)

这几个函数功能类似于fmt.Scan 、fmt.Scanf、fmt.Scanln三个函数,只不过它们不是从标准输入中读取数据而是从指定字符串中读取数据。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Goland远程连接Linux进行项目开发的实现

    Goland远程连接Linux进行项目开发的实现

    有的时候我们的开发代码要在linux服务器上运行,本文主要介绍了Goland远程连接Linux进行项目开发的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06
  • Go语言使用MySql的方法

    Go语言使用MySql的方法

    这篇文章主要介绍了Go语言使用MySql的方法,实例分析了Go语言操作MySQL的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • Go语言实现一个Http Server框架(二) Server的抽象

    Go语言实现一个Http Server框架(二) Server的抽象

    上一篇文章对http库的基本使用做了说明,这篇文章主要介绍了如何实现一个简单地httpServer,文中代码示例非常详细,感兴趣的朋友可以参考下
    2023-04-04
  • 一文详解Golang中net/http包的实现原理

    一文详解Golang中net/http包的实现原理

    这篇文章主要介绍了如何用 net/http 自己编写实现一个 HTTP Server 并探究其实现原理,具体讲解Go语言是如何接收和处理请求的,希望能够对大家的学习或工作具有一定的帮助
    2022-08-08
  • GO语言包管理工具go mod以及包详解

    GO语言包管理工具go mod以及包详解

    go mod是go的一个模块管理工具,用来代替传统的GOPATH方案,下面这篇文章主要给大家介绍了关于GO语言包管理工具go mod以及包详解的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • Go 语言中的 http.FileSystem详细解析

    Go 语言中的 http.FileSystem详细解析

    在本文中,我们深入探讨了 Go 语言中的 http.FileSystem 接口,并介绍了它的基本原理、使用方法以及实际应用场景,感兴趣的朋友跟随小编一起看看吧
    2024-03-03
  • Go语言基础学习之数组的使用详解

    Go语言基础学习之数组的使用详解

    数组相必大家都很熟悉,各大语言也都有数组的身影。Go 语言也提供了数组类型的数据结构。本文就来通过一些简单的示例带大家了解一下Go语言中数组的使用,希望对大家有所帮助
    2022-12-12
  • Golang实现基于Redis的可靠延迟队列

    Golang实现基于Redis的可靠延迟队列

    redisson delayqueue可以使用redis的有序集合结构实现延时队列,遗憾的是go语言社区中并无类似的库。不过问题不大,本文将用Go语言实现这一功能,需要的可以参考一下
    2022-06-06
  • Go并发编程实践

    Go并发编程实践

    并发编程一直是Golang区别与其他语言的很大优势,也是实际工作场景中经常遇到的。近日笔者在组内分享了我们常见的并发场景,及代码示例,以期望大家能在遇到相同场景下,能快速的想到解决方案,或者是拿这些方案与自己实现的比较,取长补短。现整理出来与大家共享
    2017-01-01
  • Golang操作mongodb的实现示例

    Golang操作mongodb的实现示例

    本文主要介绍了Golang操作mongodb的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-03-03

最新评论