Go语言学习 二十四 打印

本文介绍了Go语言中的格式化打印,包括格式字符串中的占位符、布尔、整数、浮点数和复数、字符串和字节切片、切片、指针的格式化,以及宽度、精度和其他标记的使用。还讨论了如何使用fmt包的打印函数,如fmt.Println和fmt.Printf,以及如何自定义类型格式化输出。
摘要由CSDN通过智能技术生成

本文最初发表在我的个人博客,查看原文,获得更好的阅读体验


Go中的格式化打印使用类似C的printf系列的风格,但功能更为丰富和通用。这些函数位于fmt包中,并具有大写名称:fmt.Printffmt.Fprintffmt.Sprintf 等等。字符串函数(Sprintf等)返回一个字符串,而不是填充提供的缓冲区。

fmt包中打印函数如下:

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

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

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

一 格式字符串中的占位符

对于以f结尾的格式化打印函数FprintfPrintfSprintf可以接受一个格式字符串,其中格式字符串中有相应的占位符,不同的占位符格式效果不一样。

1.1 常规格式化

%v	默认格式。当打印结构类型时,带加号的标识(%+v)会添加字段名称
%#v	值的Go语法表示形式
%T	值类型的Go语法表示形式
%%	百分号标识字面量,无需提供值

示例:

package main

import (
	"fmt"
)

func main() {
   
	t := &T{
   7, -2.35, "abc\tdef"}

	fmt.Printf("%v\n", t)  // &{7 -2.35 abc	def}
	fmt.Printf("%+v\n", t) // &{a:7 b:-2.35 c:abc	def}
	fmt.Printf("%#v\n", t) // &main.T{a:7, b:-2.35, c:"abc\tdef"}
	fmt.Printf("%T\n", t)  // *main.T
	fmt.Printf("20%%\n")   // 20%
}

type T struct {
   
	a int
	b float64
	c string
}

1.2 布尔格式化

%t  输出布尔变量值 true 或 false

1.3 整数格式化

%b	二进制形式
%c	相应的Unicode码点表示的字符
%d	十进制形式
%o	八进制形式
%q	使用Go语法安全转义的单引号字符字面量
%x	十六进制形式,a-f为小写
%X	十六进制形式,A-F为大写
%U	Unicode格式: U+1234; 等价于 "U+%04X"

示例:

a := 255

fmt.Printf("%b\n", a) // 11111111
fmt.Printf("%c\n", a) // ÿ
fmt.Printf("%d\n", a) // 255
fmt.Printf("%o\n", a<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值