为了账号安全,请及时绑定邮箱和手机立即绑定
首页 手记 【金秋打卡】第22天 Go开发工程师全新版 5-3

【金秋打卡】第22天 Go开发工程师全新版 5-3

2022.11.15 08:59 97浏览

课程名称: Go开发工程师全新版

课程章节: 5-3 格式化输出

课程讲师: bobby

课程内容:
格式化: 字符串形式,以 % 符号开头

fmt.Printf(): fmt包中函数,可以格式化输出字符串,性能不好

fmt.Printf([格式化样式],[参数1],[参数2]...);
// 如
fmt.Printf("名称: %s,年龄: %d, 地址: %s \r\n", name, age, address)

fmt.Sprintf(): fmt包中函数,传入格式化样式字符串,会生成并返回字符串,Printf() 直接打印 没有返回

fmt.Sprintf([格式化样式],[参数1],[参数2]...);
// 如
// 有返回值,不会直接打印,需要接收
str := fmt.Sprintf("名称: %s,年龄: %d, 地址: %s \r\n", name, age, address)
fmt.Println(str)

演示

package main

import (
	"fmt"
	"strconv"
)

func main() {
	//	格式化输出
	username := "bobby"
	age := 18
	address := "北京"
	mobile := "18900000000"
	var ages []int = []int{1, 2, 3}

	//没有格式化写法,及其难维护
	fmt.Println("用户名:" + username + ", 年龄:" + strconv.Itoa(age) + ",地址:" + address + ",电话:" + mobile)

	//	Printf:格式化输出,但性能没上面好
	fmt.Printf("用户名: %s, 年龄:%d, 地址:%s, 电话:%s \r\n", username, age, address, mobile)
    
    // Sprintf():返回格式化的输出后的字符串
	userMsg := fmt.Sprintf("用户名: %T, 年龄:%T, 地址:%s, 电话:%s \r\n", ages, age, address, mobile)
	fmt.Println(userMsg)
}

缺省格式和类型

格式化后的效果 动词 描述
[0 1] %v 缺省格式
[]int64{0, 1} %#v go语法打印
[]int64 %T 类型打印

整型(缩进, 进制类型, 正负符号)

格式化后的效果 动词 描述
15 %d 十进制
+15 %+d 必须显示正负符号
␣␣15 %4d Pad空格(宽度为4,右对齐)
15␣␣ %-4d Pad空格 (宽度为4,左对齐)
1111 %b 二进制
17 %o 八进制
f %x 16进制,小写

字符(有引号, Unicode)

Value: 65 (Unicode letter A)

格式化后的效果 动词 描述
A %c 字符
‘A’ %q 有引号的字符
U+0041 %U Unicode
U+0041 ‘A’ %#U Unicode 有引号

浮点(缩进, 精度, 科学计数)

Value: 123.456

格式化后的效果 动词 描述
1.234560e+02 %e 科学计数
123.456000 %f 十进制小数

字符串or 字节slice (引号, 缩进, 16进制)

Value: "cafe"

格式化后的效果 动词 描述
cafe %s 字符串原样输出
␣␣cafe %6s 宽度为6,右对齐

课程收获:
对格式化输出有了清晰了认知
图片描述

点击查看更多内容
0人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Web前端工程师
手记
粉丝
1
获赞与收藏
0

关注TA,一起探索更多经验知识

同主题相似文章浏览排行榜

风间影月说签约讲师

51篇手记,涉及Java、MySQL、Redis、Spring等方向

进入讨论

Tony Bai 说签约讲师

151篇手记,涉及Go、C、Java、Python等方向

进入讨论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消