手记

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

课程名称: 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人推荐
随时随地看视频
慕课网APP