本文整理了Go语言的标准输出流(fmt.Printf)在打印到屏幕时的格式化输出操作。

在这里按照占位符将被替换的变量类型划分,更方便查询和记忆。

总结

1.1 General(通用占位符)

占位符 说明
%v 以默认的方式打印变量的值(万能占位符,如果不知道变量是什么类型,用%v即可,go语言会自动为你识别)
%T 打印变量的类型
%% 字面上的百分号,并非值的占位符

补充:

%v:默认格式的值。当打印结构时,加号(%+v)会增加字段名;

%#v:Go 样式的值表达;

示例:

package main

import "fmt"

func main() {
var (
a = 100
b = "henry"
) // %v俗称占位符
fmt.Printf("a=%v\n", a)
// %T 打印类型
fmt.Printf("b的类型是%T\n", b)
// %%转义
fmt.Printf("%d%%\n", a)
}

执行结果:

1.2 Integer(整型)

占位符 说明
%+d 带符号的整型
%q 打印单引号
%o 不带零的八进制
%#o 带零的八进制
%x 小写的十六进制
%X 大写的十六进制
%#x 带0x的十六进制
%U 打印Unicode字符
%#U 打印带字符的Unicode
%b 打印整型的二进制

1.3 Integer width(指定长度的整型,以5为例)

占位符 说明
%5d 整型长度为5,右对齐,左边留白
%-5d 左对齐右边留白
%05d 数字前面补零

示例:

package main

import "fmt"

func main() {
var (
a = 100
) fmt.Printf("|%d|\n", a)
fmt.Printf("|%8d|\n", a)
fmt.Printf("|%-8d|\n", a)
fmt.Printf("|%08d|\n", a)
}

执行结果:

1.4 Float(浮点数)

占位符 说明
%f (=%.6f) 6位小数点
%e (=%.6e) 6位小数点(科学计数法)
%g 用最少的数字来表示
%.3g 最多3位数字来表示
%.3f 最多3位小数来表示

示例:

package main

import "fmt"

func main() {
f1 := 3.141592654
fmt.Printf("%.2f\n", f1) //最多2位小数表示
fmt.Printf("%.2g\n", f1) //最多用2位数字表示
}

执行结果:

1.5 String(字符串)

占位符 说明
%s 正常输出字符串
%q 字符串带双引号,字符串中的引号带转义符
%#q 字符串带反引号,如果字符串内有反引号,就用双引号代替
%x 将字符串转换为小写的16进制格式
%X 将字符串转换为大写的16进制格式
% x 带空格的16进制格式

示例:

package main

import "fmt"

func main() {
s1 := "这是一个字符串\""
fmt.Printf("s1:%s\n", s1) // %s 正常输出字符串
fmt.Printf("s1:%q\n", s1) // %q 字符串带双引号,字符串中的引号带转义符
}

执行结果:

1.6 String Width (指定长度的字符串,以5为例)

占位符 说明
%5s 最小宽度为5
%-5s 最小宽度为5(左对齐)
%.5s 最大宽度为5
%5.7s 最小宽度为5,最大宽度为7
%-5.7s 最小宽度为5,最大宽度为7(左对齐)
%5.3s 如果宽度大于3,则截断
%05s 如果宽度小于5,就会在字符串前面补零

代码示例:

package main

import "fmt"

func main() {
s1 := "这是一个字符串\"" fmt.Printf("s1:%20s\n", s1) //字符串最小宽度为20
fmt.Printf("s1:%.5s\n", s1) //字符串最大宽度为5
}

执行结果:

1.7 Struct(结构体)

占位符 说明
%v 以默认的方式打印变量的值
%+v 在打印结构体时,会添加字段名
%#v 在打印结构体时,会添加字段名和包名

1.8 Boolean(布尔值)

占位符 说明
%t 打印true或false

1.9 Pointer(指针)

占位符 说明
%p 带0x的指针(指针值带有0x的十六进制前缀)
%#p 不带0x的指针

Go语言fmt.Printf使用指南(占位符总结)的更多相关文章

  1. Go语言fmt.Printf使用指南

    文章引用自 fmt fmt包实现了类似C语言printf和scanf的格式化I/O.主要分为向外输出内容和获取输入内容两大部分. 向外输出 标准库fmt提供了以下几种输出相关函数. Print Pri ...

  2. Android中使用占位符

    Android中占位符的使用 有些朋友可能会动态的修改Android中strings.xml文件中的值,在这里给大家推荐一种简单的方法. strings.xml中节点是支持占位符的,如下所示: < ...

  3. GO语言学习——基本数据类型——整型、浮点型、复数、布尔值、fmt占位符

    基本数据类型 整型 整型分为以下两个大类: 按长度分为:int8.int16.int32.int64 对应的无符号整型:uint8.uint16.uint32.uint64 其中,uint8就是我们熟 ...

  4. C语言 - printf的占位符(%) 异常

    printf的占位符(%) 异常 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26719135 C语言中, 使用%代表占位符的意 ...

  5. C语言的常用printf打印占位符%d, %u, %f, %s, %c, %o, %x

    占位符含义及用法 代码: #include <stdio.h> int main(int argc, char const *argv[]) { , b = -; // 默认10进制赋值 ...

  6. 【GoLang】GoLang fmt 占位符详解

    golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf. # 定义示例类型和变量 type Human struct { Name string } var peo ...

  7. golang fmt占位符

    golang fmt格式"占位符" golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf. 定义示例类型和变量 type Human stru ...

  8. golang fmt格式占位符

    golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf. # 定义示例类型和变量 type Human struct { Name string } var peo ...

  9. golang中fmt的'占位符'使用

    golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf. # 定义示例类型和变量 type Human struct { Name string } var peo ...

随机推荐

  1. TVM图优化(以Op Fusion为例)

    首先给出一个TVM 相关的介绍,这个是Tianqi Chen演讲在OSDI18上用的PPThttps://files.cnblogs.com/files/jourluohua/Tianqi-Chen- ...

  2. 服务框架 Pigeon 的设计与实现

    1.服务框架Pigeon架构 监控系统 - CAT,负责调用链路分析.异常监控告警 配置中心 - Lion,负责一些开关配置读取 服务治理 - Governor 一个interface定义为一个服务, ...

  3. 常见python面试题-手写代码系列

    1.如何反向迭代一个序列 #如果是一个list,最快的方法使用reversetempList = [1,2,3,4]tempList.reverse()for x in tempList:    pr ...

  4. 网页接入dingding扫码登录

    前言 有时候我们做了一些网页,希望只有某些人才能看的话,可以搞一个钉钉扫码登录,接入也比较简单,下面记录下接入的过程. 流程 我们先看看官方的文档:钉钉接入文档梳理一下官方的流程:1.先跳去一个扫码网 ...

  5. C# 对象遍历 string类型 null转空字符串和去前后空格

    using System; using System.Collections.Generic; namespace OA.Common.Extensions { /// <summary> ...

  6. 简单易用的PIL,教你如何使用python实现自动化截屏

    Python有个第三方模块叫做PIL是Python Imaging Library的缩写,是用来进行图像处理的,比如,改变图片颜色,图片缩放,图片裁剪等等基本图片操作.它还包含一个截屏的功能. 从以上 ...

  7. 反编译DLL并修改DLL中的内容

    使用场景:针对当前用户因不愿意进行软件版本升级,但又希望可以解决当前问题,此时可以考虑通过反编辑DLL进行修改内容,然后重新生成新的DLL 操作步骤: 1.首先使用ILSpy.exe反编译DLL,查看 ...

  8. OpenLDAP 搭建入门

    系统环境:CentOS 7 slapd版本:2.4.44 简介 OpenLDAP是一款轻量级目录访问协议,基于X.500标准的,支持TCP/IP协议,用于实现账号集中管理的开源软件,提供一整套安全的账 ...

  9. 接口自动化平台——httprunnermanager

    Windows 环境搭建 1. 下载安装pip install httprunner==1.4.2hrun -V #1.4.2har2case -V #0.1.8 2. httprunnermanag ...

  10. 06—mybatis缓存机制

    MyBatis缓存分为一级缓存和二级缓存 一级缓存MyBatis的一级缓存指的是在一个Session域内,session为关闭的时候执行的查询会根据SQL为key被缓存(跟mysql缓存一样,修改任何 ...