格式化输出函数

fmt包含有格式化I/O函数,类似于C语言的printf和scanf。格式字符串的规则来源于C,但更简单一些

1.print和println方法

print输出给定的字符串,如果是数值或字符,则输出对应的十进制表示

fmt.Print("a", "\n")      //输出a
fmt.Print("a", "b", "\n") //输出ab
fmt.Print('a', "\n") //输出97
fmt.Print('a', 'b', "\n") //输出97 98 字符之间会输出一个空格
fmt.Print(, "\n") //输出12
fmt.Print(, , "\n") //输出12 13 数值之间输出一个空格

Println 自动在结尾输出\n,两个数值之间自动加空格,每项之间自动加空格

fmt.Println("---------------------------------")
fmt.Println("a") //输出a
fmt.Println("a", "b") //输出a b
fmt.Println('a') //输出97
fmt.Println('a', 'b') //输出97 98
fmt.Println() //输出12
fmt.Println(, ) //输出12 13
fmt.Println("\n", , ) //输出 12 13 12之前有一个空格

2、以下为printf方法的格式说明:

printf 格式化输出

定义变量示例

type Human struct {
Name string
} var people = Human{Name:"春生"}

普通占位符

占位符     
说明
举例
输出
%v
 相应值的默认格式
fmt.Printf("%v", name)
{春生}
%+v 
打印结构体时,会添加字段名
fmt.Printf("%+v", people)
main.Human{Name:"zhangsan"}
%#v 
相应值的Go语法表示
fmt.Printf("%#v",people)
main.Human{Name:"春生"}
%T
相应值的类型的Go语法表示
fmt.Printf("%T",people)
main.Human
%%
字面上的百分号
fmt.Printf("%%")
%

布尔占位符

占位符
说明 举例 输出
%t 
true 或 false。
fmt.Printf("%t",true)
true

整数占位符

占位符 说明 举例 输出
%b  
二进制表示
fmt.Printf("%b", 5)
   101
%c
 相应Unicode码点所表示的字符
fmt.Printf("%c", 0x4E2D)
%d
十进制表示
fmt.Printf("%d", 0x12)
18
%o
 八进制表示
fmt.Printf("%d", 10)
12
%q 
单引号围绕的字符字面值,由Go语法安全地转义
fmt.Printf("%q", 0x4E2D)
   '中'
   %x  十六进制表示,字母形式为小写 a-f 
fmt.Printf("%x", 13)
    d

%X

   十六进制表示,字母形式为大写 A-F
fmt.Printf("%x", 13)
   D
   %U   Unicode格式:U+1234,等同于 "U+%04X"
fmt.Printf("%U", 0x4E2D)
 U+4E2D

浮点数和复数的组成部分(实部和虚部)

占位符 说明 举例
%e (=%.6e) 6位小数点
科学计数法,例如 -1234.456e+78
fmt.Printf("%e", 10.2)
%E 科学计数法,例如 -1234.456E+78 fmt.Printf("%e", 10.2)
%f (=%.6f) 6位小数点
有小数点而无指数,例如 123.456
fmt.Printf("%f", 10.2)
%g 根据情况选择 %e 或 %f 以产生更紧凑的(无末尾的0)输出 fmt.Printf("%g", 10.20)
%G 根据情况选择 %E 或 %f 以产生更紧凑的(无末尾的0)输出 fmt.Printf("%G", 10.20+2i)

字符串与字节切片

占位符 说明 举例
%s 输出字符串表示(string类型或[]byte) fmt.Printf("%s", []byte("oldboy"))
%10s 输出字符串最小宽度为10(右对齐) fmt.Printf("%10s", "oldboy")
%-10s 输出字符串最小宽度为10(左对齐) fmt.Printf("%-10s", "oldboy")
%.5s 输出字符串最大宽度为5 fmt.Printf("%.5s", "oldboy")
%5.10s 输出字符串最小宽度为5,最大宽度为10 fmt.Printf("%5.10s", "oldboy")
%-5.10s 输出字符串最小宽度为5,最大宽度为10(左对齐) fmt.Printf("%-5.10s", "oldboy")
%5.3s 输出字符串宽度为5,如果原字符串宽度大于3,则截断 fmt.Printf("%5.3s", "oldboy")
%010s 如果宽度小于10,就会在字符串前面补零 fmt.Printf("%010s", "oldboy")
%q 双引号围绕的字符串,由Go语法安全地转义 fmt.Printf("%q", "oldboy")
%x 十六进制,小写字母,每字节两个字符 fmt.Printf("%x", "oldboy")
%X 十六进制,大写字母,每字节两个字符 fmt.Printf("%X", "oldboy")

指针

占位符 说明 举例
%p 十六进制表示,前缀 0x fmt.Printf("%p", &site)
%#p 不带前缀 0x fmt.Printf("%#p", &site)

Go语言fmt包详解的更多相关文章

  1. Go语言string包详解

    strings包实现了用于操作字符的简单函数. 查找操作 判断给定字符串s中是否包含子串substr, 找到返回true, 找不到返回false func Contains(s, substr str ...

  2. Golang Context 包详解

    Golang Context 包详解 0. 引言 在 Go 语言编写的服务器程序中,服务器通常要为每个 HTTP 请求创建一个 goroutine 以并发地处理业务.同时,这个 goroutine 也 ...

  3. Spring jar包详解

    Spring jar包详解 org.springframework.aop ——Spring的面向切面编程,提供AOP(面向切面编程)的实现 org.springframework.asm——spri ...

  4. Spring——jar包详解(转)

    Spring——jar包详解 org.springframework.aop ——Spring的面向切面编程,提供AOP(面向切面编程)的实现 org.springframework.asm——spr ...

  5. Spring 3.x jar 包详解 与 依赖关系

    以下的内容我会持续更新(当然是我有新发现的时候); 以下内容是我在网上搜索.整理.修改的而成的内容.由于很多内容都是转载了,无法追溯到源头,因此无法一一对原作者进行道谢. 这几天,我查阅大量的官方的文 ...

  6. Spring 3.x jar 包详解 与 依赖关系(转)

    以下的内容我会持续更新(当然是我有新发现的时候); 以下内容是我在网上搜索.整理.修改的而成的内容.由于很多内容都是转载了,无法追溯到源头,因此无法一一对原作者进行道谢. 这几天,我查阅大量的官方的文 ...

  7. 常见 jar包详解

        常见 jar包详解 jar包 用途 axis.jar SOAP引擎包 commons-discovery-0.2.jar 用来发现.查找和实现可插入式接口,提供一些一般类实例化.单件的生命周期 ...

  8. easyui下载包详解

    easyui包详解: 文件夹: demo--该目录下存放的是 EasyUI PC 版各插件的示例示例.如果不想在官网上查看演示,可以在该目录下找到相应的演示示例 demo-mobile--该目录下存放 ...

  9. spring原理案例-基本项目搭建 02 spring jar包详解 spring jar包的用途

    Spring4 Jar包详解 SpringJava Spring AOP: Spring的面向切面编程,提供AOP(面向切面编程)的实现 Spring Aspects: Spring提供的对Aspec ...

随机推荐

  1. js失效的原因及解决方式

    1.在head中先引用了js文件再引用jquery,应先引用jquery 2.js文件中所有代码应包含在$(function(){ });中

  2. SQL日期跟时间值序列

    与数据操作相关的场景要生成日期和时间序列,序列的范围是从输入值@start到@end,且具有一定的时间间隔.这样的场景包括填充数据仓库中的时间维度.应用程序的运行时间安排以及其他.可以借助http:/ ...

  3. monkeyrunner小结

    上次说到已经配好了MonkeyRunner的运行环境,现在讲解怎么进行简单的MonkeyRunner测试.这个拖了很久才有时间和心情总结一下.真是计划赶不上变化啊. 就不说废话了.http://dev ...

  4. Java虚拟机学习(1): 类加载机制

    转自:微信公共号ImportNew 来源:java2000_wl 链接:blog.csdn.net/java2000_wl/article/details/8040633 JVM把class文件加载的 ...

  5. List of HTTP header fields

    https://en.wikipedia.org/wiki/List_of_HTTP_header_fields Content-Type The MIME type of the body of t ...

  6. 编写高质量代码改善C#程序的157个建议——建议89:在并行方法体中谨慎使用锁

    建议89:在并行方法体中谨慎使用锁 除了建议88所提到的场合,要谨慎使用并行的情况还包括:某些本身就需要同步运行的场合,或者需要较长时间锁定共享资源的场合. 在对整型数据进行同步操作时,可以使用静态类 ...

  7. document--文档中的操作,操作属性、操作样式、操作元素

    ---恢复内容开始--- document操作:    1.找元素   getE..    2.操作内容   非表单:innerHtml   表单:value    3.操作属性            ...

  8. Class Loading Deadlocks

    By tomas.nilsson on Feb 28, 2010 Mattis keeps going strong, in this installment you get to learn eve ...

  9. ARM汇编中一些重要伪指令

    IMPORT ,定义表示这是一个外部变量的标号,不是在本程序定义的 EXPORT ,表示本程序里面用到的变量提供给其他模块调用的. 以上两个在汇编和C语言混合编程的时候用到 ENDP    表示PRO ...

  10. Hortonwork Ambari配置Hive集成Hbase的java开发maven配置

    集群环境 ambari 2.7.3 hdp/hortonwork 2.6.0.3 maven <dependency> <groupId>org.apache.hive< ...