一、Go基础知识6.2、字符串基本操作——格式化输出

一、格式化输出

1、一般拼接输出

package main

import (
	"fmt"
	"strconv"
)

func main() {
	username := "米粒"
	age := 18
	address := "上海"
	mobile := "123456777"

	fmt.Println("用户名:" + username + ", 年龄:" + strconv.Itoa(age) + ", 地址:" + address + ", 电话:" + mobile)
}

结果:
用户名:米粒, 年龄:18, 地址:上海, 电话:123456777

这种方式是通过字符串拼接来输出,使用 + 运算符将各个变量和固定字符串连接在一起,最后通过 fmt.Println 打印整个字符串。

2、格式化输出

2.1、第一种,直接输出

package main

import (
	"fmt"
)

func main() {
	username := "米粒"
	age := 18
	address := "上海"
	mobile := "123456777"

	fmt.Printf("用户名:%s, 年龄:%d, 地址:%s, 电话:%s\r\n", username, age, address, mobile)
}

结果:
用户名:米粒, 年龄:18, 地址:上海, 电话:123456777

这种方式使用 %s、%d 等格式化占位符,通过 Printf 函数直接输出格式化后的字符串。

2.2、第二种,拼接后再输出

package main

import (
	"fmt"
)

func main() {
	username := "米粒"
	age := 18
	address := "上海"
	mobile := "123456777"
	msg := fmt.Sprintf("用户名:%s, 年龄:%d, 地址:%s, 电话:%s\r\n", username, age, address, mobile)
	fmt.Println(msg)
}

结果:
用户名:米粒, 年龄:18, 地址:上海, 电话:123456777

这种方式使用 Sprintf 函数将格式化后的字符串保存在一个变量中,然后通过 Println 函数打印这个变量。

3、格式化输出的各种格式

在 Go 语言中,格式化输出主要通过 fmt.Printf 函数实现,使用一系列的格式化占位符来定义输出的格式。以下是一些常用的格式化占位符及其详细解释:

常用的格式化占位符:

  1. %v: 通用格式,将变量的默认格式输出。

  2. %T: 变量的类型。

  3. %d: 十进制整数。

  4. %b: 二进制表示的整数。

  5. %o: 八进制表示的整数。

  6. %x: 十六进制表示的整数,使用小写字母。

  7. %X: 十六进制表示的整数,使用大写字母。

  8. %s: 字符串。

  9. %q: 带有双引号的字符串。

  10. %f: 浮点数,默认精度。

  11. %e,%E: 科学计数法表示的浮点数,%e 使用小写字母,%E 使用大写字母。

  12. %g,%G: 根据实际情况选择 %e 或 %f 以产生更紧凑的(无末尾的零)输出,%g 使用小写字母,%G 使用大写字母。

  13. %t: 布尔值,true 或 false。

  14. %p: 指针,以十六进制表示。

  15. %%: 百分号本身。

举例:

package main

import "fmt"

func main() {
    // 通用格式 %v
    var num = 42
    fmt.Printf("通用格式: %v\n", num)

    // 类型 %T
    var name = "Gopher"
    fmt.Printf("类型: %T\n", name)

    // 整数 %d, %b, %o, %x, %X
    var age = 25
    fmt.Printf("十进制: %d, 二进制: %b, 八进制: %o, 小写十六进制: %x, 大写十六进制: %X\n", age, age, age, age, age)

    // 字符串 %s, %q
    var city = "Beijing"
    fmt.Printf("字符串: %s, 带引号的字符串: %q\n", city, city)

    // 浮点数 %f, %e, %E, %g, %G
    var salary = 50000.00
    fmt.Printf("浮点数: %f, 科学计数法: %e, 大写科学计数法: %E, 自动选择: %g, 大写自动选择: %G\n", salary, salary, salary, salary, salary)

    // 布尔值 %t
    var isGoCool = true
    fmt.Printf("布尔值: %t\n", isGoCool)

    // 指针 %p
    var ptr = &num
    fmt.Printf("指针: %p\n", ptr)

    // 百分号 %%
    fmt.Printf("百分号: %%\n")
}

结果:

通用格式: 42
类型: string
十进制: 25, 二进制: 11001, 八进制: 31, 小写十六进制: 19, 大写十六进制: 19
字符串: Beijing, 带引号的字符串: "Beijing"
浮点数: 50000.000000, 科学计数法: 5.000000e+04, 大写科学计数法: 5.000000E+04, 自动选择: 50000, 大写自动选择: 50000
布尔值: true
指针: 0xc0000180d0
百分号: %

4、不同种输出的区别

性能
一般拼接输出(第一种方式)可能在大量字符串拼接时性能较差,因为每次 + 运算都会创建一个新的字符串。
格式化输出(两种方式)在大多数情况下性能更好,因为它们利用了格式化占位符直接构建最终字符串。

可读性
一般拼接输出相对直观,但可能随着连接的变量和字符串增多而变得难以维护。
格式化输出更具可读性,格式化占位符提供了清晰的结构,易于理解和修改。

错误检查
一般拼接输出和格式化输出都不涉及复杂的错误检查,但格式化输出的占位符可以提供一定程度的类型安全。

灵活性
格式化输出更灵活,可以轻松控制变量的格式、宽度等。

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风不归Alkaid

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值