zoukankan      html  css  js  c++  java
  • Go基础篇【第2篇】: 内置库模块 fmt

    fmt官方文档说明:https://studygolang.com/pkgdoc

    import "fmt"

    mt包实现了类似C语言printf和scanf的格式化I/O。格式化动作('verb')源自C语言但更简单。

    Printing 输出部分

    verb:

    通用:

    %v	值的默认格式表示
    %+v	类似%v,但输出结构体时会添加字段名
    %#v	值的Go语法表示
    %T	值的类型的Go语法表示
    %%	百分号

    布尔值:

    %t	单词true或false

    整数:

    %b	表示为二进制
    %c	该值对应的unicode码值
    %d	表示为十进制
    %o	表示为八进制
    %q	该值对应的单引号括起来的go语法字符字面值,必要时会采用安全的转义表示
    %x	表示为十六进制,使用a-f
    %X	表示为十六进制,使用A-F
    %U	表示为Unicode格式:U+1234,等价于"U+%04X"

    浮点数与复数的两个组分:

    %b	无小数部分、二进制指数的科学计数法,如-123456p-78;参见strconv.FormatFloat
    %e	科学计数法,如-1234.456e+78
    %E	科学计数法,如-1234.456E+78
    %f	有小数部分但无指数部分,如123.456
    %F	等价于%f
    %g	根据实际情况采用%e或%f格式(以获得更简洁、准确的输出)
    %G	根据实际情况采用%E或%F格式(以获得更简洁、准确的输出)

    字符串和[]byte:

    %s	直接输出字符串或者[]byte
    %q	该值对应的双引号括起来的go语法字符串字面值,必要时会采用安全的转义表示
    %x	每个字节用两字符十六进制数表示(使用a-f)
    %X	每个字节用两字符十六进制数表示(使用A-F)    

    指针:

    %p	表示为十六进制,并加上前导的0x    

    宽度通过一个紧跟在百分号后面的十进制数指定,如果未指定宽度,则表示值时除必需之外不作填充。精度通过(可选的)宽度后跟点号后跟的十进制数指定。如果未指定精度,会使用默认精度;如果点号后没有跟数字,表示精度为0。举例如下:

    %f:    默认宽度,默认精度
    %9f    宽度9,默认精度
    %.2f   默认宽度,精度2
    %9.2f  宽度9,精度2
    %9.f   宽度9,精度0    

    func Print

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

    Print采用默认格式将其参数格式化并写入标准输出。如果两个相邻的参数都不是字符串,会在它们的输出之间添加空格。返回写入的字节数和遇到的任何错误。

    func Fprint

    func Fprint(w io.Writer, a ...interface{}) (n int, err error)

    Fprint采用默认格式将其参数格式化并写入w,对Print的扩展。如果两个相邻的参数都不是字符串,会在它们的输出之间添加空格。返回写入的字节数和遇到的任何错误。

    func Sprint

    func Sprint(a ...interface{}) string

    Sprint采用默认格式将其参数格式化,串联所有输出生成并返回一个字符串。如果两个相邻的参数都不是字符串,会在它们的输出之间添加空格。

    func Println

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

    Println采用默认格式将其参数格式化并写入标准输出。总是会在相邻参数的输出之间添加空格并在输出结束后添加换行符。返回写入的字节数和遇到的任何错误。

    func Fprintln

    func Fprintln(w io.Writer, a ...interface{}) (n int, err error)

    Fprintln采用默认格式将其参数格式化并写入w。总是会在相邻参数的输出之间添加空格并在输出结束后添加换行符。返回写入的字节数和遇到的任何错误。

    func Sprintln

    func Sprintln(a ...interface{}) string

    Sprintln采用默认格式将其参数格式化,串联所有输出生成并返回一个字符串。总是会在相邻参数的输出之间添加空格并在输出结束后添加换行符。

    func Printf

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

    Printf根据format参数生成格式化的字符串并写入标准输出。返回写入的字节数和遇到的任何错误。

    即:接收一个可格式化string,然后输出到标准输出中。

    func Fprintf

    func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error)

    Fprintf根据format参数生成格式化的字符串并写入w可以理解为对Printf的扩展,写入到指定的目的地。返回写入的字节数和遇到的任何错误。

    func Sprintf 

    func Sprintf(format string, a ...interface{}) string

    Sprintf根据format参数生成格式化的字符串并返回该字符串

    func Errorf 

    func Errorf(format string, a ...interface{}) error

    Errorf根据format参数生成格式化字符串并返回一个包含该字符串的错误。

    获取输入

    // Scan 从标准输入中读取数据,并将数据用空白分割并解析后存入 a 提供
    // 的变量中(换行符会被当作空白处理),变量必须以指针传入。
    // 当读到 EOF 或所有变量都填写完毕则停止扫描。
    // 返回成功解析的参数数量。
    func Scan(a ...interface{}) (n int, err error)
    
    // Scanln 和 Scan 类似,只不过遇到换行符就停止扫描。
    func Scanln(a ...interface{}) (n int, err error)
    
    // Scanf 从标准输入中读取数据,并根据格式字符串 format 对数据进行解析,
    // 将解析结果存入参数 a 所提供的变量中,变量必须以指针传入。
    // 输入端的换行符必须和 format 中的换行符相对应(如果格式字符串中有换行
    // 符,则输入端必须输入相应的换行符)。
    // 占位符 %c 总是匹配下一个字符,包括空白,比如空格符、制表符、换行符。
    // 返回成功解析的参数数量。
    func Scanf(format string, a ...interface{}) (n int, err error)
    // 对于 Scan 而言,回车视为空白
    func main() {
        a, b, c := "", 0, false
        fmt.Scan(&a, &b, &c)
        fmt.Println(a, b, c)
        // 在终端执行后,输入 abc 1 回车 true 回车
        // 结果 abc 1 true
    }
    
    // 对于 Scanln 而言,回车结束扫描
    func main() {
        a, b, c := "", 0, false
        fmt.Scanln(&a, &b, &c)
        fmt.Println(a, b, c)
        // 在终端执行后,输入 abc 1 true 回车
        // 结果 abc 1 true
    }
    
    // 格式字符串可以指定宽度
    func main() {
        a, b, c := "", 0, false
        fmt.Scanf("%4s%d%t", &a, &b, &c)
        fmt.Println(a, b, c)
        // 在终端执行后,输入 1234567true 回车
        // 结果 1234 567 true
    }
    // 功能同上面三个函数,只不过从 r 中读取数据。
    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)
    
    // 功能同上面三个函数,只不过从 str 中读取数据。
    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)
    type student struct {
        Name string
        Age int
        Score float32
    }
    
    func main()  {
        var str = "stu01 18 89.92"
        var stu student
        fmt.Sscanf(str, "%s %d %f", &stu.Name, &stu.Age, &stu.Score)
        fmt.Println(stu)
    }
    输出:

    {stu01 18 89.92}

    
    
  • 相关阅读:
    flask 返回json数据
    flask 中文乱码
    flask 参数校验
    AOP集成防止连续多次点击问题
    关于横竖屏切换导致的Activity重建问题
    Flutter工程无法找到Android真机或Android模拟器
    Failed to find configured root that contains
    Unable to resolve dependency问题解决
    双重ScrollView,RecyclerView联动实例
    RecyclerView联动滑动失败
  • 原文地址:https://www.cnblogs.com/sunailong/p/7561870.html
Copyright © 2011-2022 走看看