课程名称: 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进制,小写 |
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 |
十进制小数 |
Value: "cafe"
格式化后的效果 | 动词 | 描述 |
---|---|---|
cafe | %s |
字符串原样输出 |
␣␣cafe | %6s |
宽度为6,右对齐 |
课程收获:
对格式化输出有了清晰了认知