Go中的fmt几种输出的区别和格式化方式

本文详细介绍了Go中的fmt包,包括通用的占位符使用、整数、浮点数、布尔型、字符串、指针等类型的格式化输出,以及格式化错误的处理方式,帮助读者掌握Go语言的格式化输出技巧。
摘要由CSDN通过智能技术生成

Go中的fmt几种输出的区别和格式化方式

在日常使用fmt包的过程中,各种眼花缭乱的print是否让你莫名的不知所措呢,更让你茫然的是各种格式化的占位符。。简直就是噩梦。今天就让我们来征服格式化输出,做一个会输出的Goer。

fmt.Print有几个变种:

Print:   输出到控制台,不接受任何格式化操作
Println: 输出到控制台并换行
Printf : 只可以打印出格式化的字符串。只可以直接输出字符串类型的变量(不可以输出别的类型)
Sprintf:格式化并返回一个字符串而不带任何输出
Fprintf:来格式化并输出到 io.Writers 而不是 os.Stdout
1. 通用的占位符
%v     值的默认格式。
%+v   类似%v,但输出结构体时会添加字段名
%#v  相应值的Go语法表示 
%T    相应值的类型的Go语法表示 
%%    百分号,字面上的%,非占位符含义

默认格式%v下,对于不同的数据类型,底层会去调用默认的格式化方式:

bool:                    %t 
int, int8 etc.:          %d 
uint, uint8 etc.:        %d, %x if printed with %#v
float32, complex64, etc: %g
string:                  %s
chan:                    %p 
pointer:                 %p

如果是复杂对象的话,按照如下规则进行打印:

struct:            {field0 field1 ...} 
array, slice:      [elem0 elem1 ...] 
maps:              map[key1:value1 key2:value2] 
pointer to above:  &{}, &[], &map[]

示例:

package main

import (
	"fmt"
	"strconv"
)

type User struct {
   
	Name string
	Age  int
}

func (User) GetUser(user User) string{
   
	return user.Name + " " + strconv.Itoa(user.Age)
}

func main() {
   
	user := User{
   "xiaoming", 13}
	//Go默认形式
	fmt.Printf("%v",user)
	fmt.Println()
	//类型+值对象
	fmt.Printf("%#v",user)
	fmt.Println()
	//输出字段名和字段值形式
	fmt.Printf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值