fmt print

作者: JunChow520 | 来源:发表于2021-04-17 04:06 被阅读0次

Go标准库fmt实现了类似C语言printfscanf的格式化I/O,主要分为向外输出内容和获取输入内容两大部分。

向外输出

向外输出函数分为三类

向外输出 描述
Print系列 将内容输出到系统标准输出os.Stdout
Fprint系列 将内容输出到一个io.Writer接口类型的变量中
Sprint系列 将传入的数据生成并返回一个字符串

Print系列函数会将内容输出到系统标准输出os.Stdout

func Print(a ...interface{}) (n int, err error)
func Println(a ...interface{}) (n int, err error)
func Printf(format string, a ...interface{}) (n int, err error)
函数 描述
fmt.Print 输出到控制台,不接受任何格式化操作。
fmt.Println 输出到控制台并换行
fmt.Printf 仅打印出格式化的字符串
func Print(a ...interface{}) (n int, err error)
func Println(a ...interface{}) (n int, err error)
func Printf(format string, a ...interface{}) (n int, err error)

Fprint系列函数会将传入内容输出到一个io.Writer接口类型的变量中,通常用来向文件中写入内容。

函数 描述
fmt.Fprint 输出到io.Writer而非io.Stdout
fmt.Fprintln 输出到io.Writer并换行
fmt.Fprintf 格式化并输出到io.Writer
func Fprint(w io.Writer, a ...interface{}) (n int, err error)
func Fprintln(w io.Writer, a ...interface{}) (n int, err error)
func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error)

例如:输入打印到日志文件

func file_put_content(filename, content string) {
    fh, err := os.OpenFile(filename, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
    if err != nil {
        fmt.Println(err)
        return
    }
    now := time.Now().Format("2006-01-02 15:04:05")
    _, _ = fmt.Fprintf(fh, "%s %s\n", now, content)
}
func main() {
    file_put_content("demo.log", "hello world")
    file_put_content("demo.log", "hell word")
}

Sprint系列函数会将传入的数据生成并返回一个字符串

函数 描述
fmt.Sprint 返回一个字符串而不带任何输出
fmt.Sprintln 返回一个字符串且换行
fmt.Sprintf 格式化并返回一个字符串而不带任何输出
func Sprint(a ...interface{}) string
func Sprintln(a ...interface{}) string
func Sprintf(format string, a ...interface{}) string

错误输出

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

fmt.Errorf()会根据format参数生成格式化字符串并返回一个error类型的错误对象,可用于自定义错误类型,比如通常在错误中需要获得对应位置信息。

例如:自定义错误类型

err := fmt.Errorf("%s\n", "define error")

格式化占位符

Printf系列函数都支持format格式化参数

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

按照格式化占位符被替换的变量类型划分

  • 通用占位符
  • 字符占位符
  • 布尔占位符
  • 整数占位符
  • 小数占位符
  • 序列占位符
  • 指针占位符
通用占位符 描述
%v 值的默认格式
%+v 打印结构体时会添加字段名
%#v 值的Go语法表示
%T 打印值的Go类型
%% 字面上的百分号

字符占位符

字符占位符 描述
%s 直接输出字符串或[]byte字符数组
%q 值对应的双引号包裹起来的Go语法字符串字面量,必要时会采用安全的转义标识。
%x 每个字节使用两个字符16进制数表示,16进制小写a-f。
%X 每个字节使用两个字符16进制数表示,16进制大写A-F。
布尔占位符 描述
%t 输出布尔值true或false
整数占位符 描述
%b 二进制表示
%c 相应Unicode码点所表示的字符
%d 十进制表示
%o 八进制表示
%x 十六进制表示,字母形式为小写。
%X 十六进制表示,字母形式为大写。
%U Unicode格式
%q 单引号围绕的字符字面值,由Golang语法安全地转义。
小数占位符 描述
%f 等同于%.6f,6位小数点,有小数点而无指数。
%e 等同于%.6e,6位小数点,科学计数法。
%E 科学计数法
%g 根据情况选择%e或%f以产生更为紧凑的输出
%G 根据情况选择%E或%f以产生更为紧凑的输出
序列占位符 描述
%s 输出字符串表示
%10s 输出字符串最小宽度为10且右对齐
%-10s 输出字符串最小宽度为10且左对齐
%.5s 输出字符串最大宽度为5
%5.10s 输出字符串最小宽度为5,最大宽度为10。
%-5.10s 输出字符串最小宽度为5,最大宽度为10,左对齐。
%5.3s 输出字符串宽度为5,若源字符串宽度大于3则截断。
%010s 若宽度小于10则在字符串前补零
%q 双引号围绕的字符串,由Golang语法安全地转义。
指针占位符 描述
%p 十六进制,前缀0x。
%#p 不带前缀ox的十六进制

标志符

标志符 描述
+ 总打印数值的正负号
- 左对齐
# 备用格式
‘ ’ 空格留白
0 填充前导零而非空格

宽度标识符

  • 宽度会通过紧跟在%后的十进制数指定,若未指定除必需外不作填充。
  • 精度可选,通过宽度后跟.点号后跟的十进制数指定,若未指定值使用默认。
  • 若点号后没跟数字则表示精度未0

相关文章

  • fmt print

    格式化 Golang的fmt包中含有格式化I/O函数,类似于C语言中的printf和scanf。 函数描述fmt....

  • go print fmt

    常用标志 测试例子:https://play.golang.org/p/kN6pBwc4WT_F %v: v代表v...

  • 延迟语句--defer

    一、初识defer func main(){defer fmt.println("world")fmt.print...

  • 2-8 Go --- 格式化输出

    fmt 包的 Print 系列函数 内容标准化输出:Print、Println、Printf。 Print 函数直...

  • Go语言输出格式

    Print()和Println() Print()函数不换行,Println()换行输出 输出提示 fmt.Pri...

  • Golang获取世界统一时间

    //这是获取当前时间 fmt.Println(time.Now()) //这是获取世界统一时间 fmt.Print...

  • Go fmt.Print() 格式化

    Go 原生输出可以使用 fmt.Println(),但也可以手动方式指定输出格式,其调用的是包fmt.Print(...

  • golang fmt(格式换 I O接口)

    基本模式 fmt 方法可以大致分为 print, scan两类, 根据基础方法可以构建特定方法。 Print 将参...

  • Let's Go Three

    Three 还是fmt包 fmt.Print(“将变量转换为字符串类型并写如到os.Stdout标准输出中”) 返...

  • Golang 中 print 与 fmt.print的区别

    结论: print 在golang中 是属于输出到标准错误流中并打印,官方不建议写程序时候用它。可以再debug时...

网友评论

      本文标题:fmt print

      本文链接:https://www.haomeiwen.com/subject/wfxulltx.html