golang fmt.Printf中 %q

在 Go 语言中,fmt.Printf 函数用于格式化输出,其中 %q 是一个非常有用的格式动词,用于在字符串或字节切片周围加上引号。这对于调试和显示字符串内容时特别有用,因为它会显示出字符串的原始形式,包括转义字符。

以下是 %q 的具体用法和特点:

  1. 字符串 (string):

    • %q 会给字符串值加上双引号。
    • 任何非打印字符或特殊字符将被转义。
    go 复制代码
    package main
    
    import "fmt"
    
    func main() {
        str := "Hello, 世界"
        fmt.Printf("%q\n", str) // 输出: "Hello, 世界"
    }
  2. 字节切片 (\[\]byte):

    • 对于字节切片,行为类似,但输出会更明确地显示出字节的形式。
    go 复制代码
    package main
    
    import "fmt"
    
    func main() {
        byteSlice := []byte{72, 101, 108, 108, 111, 44, 32, 228, 184, 150, 231, 149, 140}
        fmt.Printf("%q\n", byteSlice) // 输出: "Hello, \xe4\xb8\x96\xe7\x95\x8c"
    }
  3. 空值处理:

    • 如果传递的是 nil%q 会输出 ""
    go 复制代码
    package main
    
    import "fmt"
    
    func main() {
        var nilStr *string
        fmt.Printf("%q\n", nilStr) // 输出: ""
    }
  4. 转义字符:

    • 特殊字符如 \n, \t 等会在引号内被转义显示。
    go 复制代码
    package main
    
    import "fmt"
    
    func main() {
        specialStr := "Line1\nLine2\tTabbed"
        fmt.Printf("%q\n", specialStr) // 输出: "Line1\nLine2\tTabbed"
    }

使用 %q 可以帮助你更清晰地看到字符串在内存中的实际表示,这在处理包含特殊字符的字符串或进行调试时非常有用。

相关推荐
xywww1681 小时前
AWS 账号权限怎么分:根用户和 IAM 用户区别及日常使用建议
大数据·开发语言·人工智能·python·gpt·云计算·aws
没钥匙的锁14 小时前
16-Java反射机制:Spring IOC背后的核心技术
java·开发语言·spring
起予者汝也4 小时前
Python 数据结构
开发语言·数据结构·python
ECT-OS-JiuHuaShan6 小时前
严格证明:还原论是ASCII,整体论是UTF-8的历史意义和价值
开发语言·人工智能·算法·量子计算
AC赳赳老秦6 小时前
时间开销自动统计:OpenClaw 记录工作任务时长、分析时间分配、给出优化建议
java·大数据·开发语言·python·自动化·deepseek·openclaw
祉猷并茂,雯华若锦6 小时前
Appium 3.x 实战:元素定位与常见错误解析
开发语言·python·appium
Lethehong7 小时前
飞算Java:从需求梳理到风险闭环,搭建云盾企业信息安全与权限管理平台
java·开发语言
爱喝水的鱼丶7 小时前
SAP-ABAP:ALV数据导出增强——实现Excel/PDF/CSV多格式自定义导出
开发语言·性能优化·sap·abap·erp
Mortalbreeze7 小时前
深入理解 Linux 线程机制(四):线程同步——条件变量与信号量
linux·运维·服务器·开发语言·c++
不会c+7 小时前
C语言:入门到精通(408考研版)系列七 派生的数据类型
c语言·开发语言