【Go语言学习】——fmt函数库

fmt标准库


参考博客

  • 通用占位符

    占位符说明
    %v值的默认格式表示
    %+v类似%v,但输出结构体时会添加字段名
    %#v值的Go语法表示,还会输出值类型,更加详细
    %T打印值的类型
    %%百分号
  • 布尔型

    占位符说明
    %ttrue或false
  • 整型

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

    占位符说明
    %b无小数部分、二进制指数的科学计数法,如-123456p-78
    %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
  • 宽度标识符

    占位符说明
    %f默认宽度,默认精度
    %9f宽度9,默认精度
    %.2f默认宽度,精度2
    %9.2f宽度9,精度2
    %9.f宽度9,精度0
  • 其他flag

    占位符说明
    ’+’总是输出数值的正负号;对%q(%+q)会生成全部是ASCII字符的输出(通过转义);
    ’ ‘对数值,正数前加空格而负数前加负号;对字符串采用%x或%X时(% x或% X)会给各打印的字节之间加空格
    ’-’在输出右边填充空白而不是默认的左边(即从默认的右对齐切换为左对齐);
    ’#’八进制数前加0(%#o),十六进制数前加0x(%#x)或0X(%#X),指针去掉前面的0x(%#p)对%q(%#q),对%U(%#U)会输出空格和单引号括起来的go字面值;
    ‘0’使用0而不是空格填充,对于数值类型会把填充的0放在正负号后面;
    package main
    
    import "fmt"
    
    func main() {
    	fmt.Print("在终端打印该信息。") //print可以输出任何类型,任何数量的值
    	na := "沙河小王子"
    	fmt.Printf("我是:%s\n", na)  //printf支持格式化输出,即前面用字符串,里面使用占位符来输出后面的内容
    	fmt.Println("在终端打印单独一行显示") //相比print就是多一个换行符
    
    	m1 := make(map[string]int, 1)
    	m1["卡卡"] = 100
    	fmt.Printf("%v\n", m1)
    	fmt.Printf("%#v\n", m1)   //添加#号后打印出来的信息更加详细
    	fmt.Printf("%d%%\n", 100) //使用%%则可以打印出%
    	//字符
    	fmt.Printf("%q\n", 65) //输出对应的字符
    	//复数和浮点数
    	fmt.Printf("%b\n", 3.1415926) //无小数部分二进制指数的科学计数法
    	//字符串
    	fmt.Printf("%q\n", "卡卡") //输出带双引号的字符串的值
    
    	n := 12.34
    	fmt.Printf("%f\n", n)
    	fmt.Printf("%9f\n", n)   //宽度为9
    	fmt.Printf("%.2f\n", n)  //精度为2
    	fmt.Printf("%9.2f\n", n) //宽度为9精度为2,差的宽度用空字符表示
    	fmt.Printf("%9.f\n", n)  //宽度为9精度为0,在前面用空字符占位
    
    	//获取用户的输入
    	var (
    		name    string
    		age     int
    		married bool
    	)
    	//Scan读取空白符分割的的值,换行符视为空白符,读取的个数少于提供参数会报错
    	// fmt.Scanf("1:%s 2:%d 3:%t", &name, &age, &married)
    	// fmt.Printf("扫描结果 name:%s age:%d married:%t \n", name, age, married)
    	//Scanf采用格式化的语句,必须按照格式化指定的格式去读取空白符分隔的值保存给参数
    	//多个参数要注意用空格分开
    	fmt.Scanf("1:%s 2:%d 3:%t", &name, &age, &married)
    	fmt.Printf("扫描结果 name:%s age:%d married:%t \n", name, age, married)
    	//Scanln类似Scan,它在遇到换行时才停止扫描。最后一个数据后面必须有换行或者到达结束位置
    	fmt.Scanln(&name, &age, &married)
    	fmt.Printf("扫描结果 name:%s age:%d married:%t \n", name, age, married)
    }
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值