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 可以帮助你更清晰地看到字符串在内存中的实际表示,这在处理包含特殊字符的字符串或进行调试时非常有用。

相关推荐
flyair_China6 分钟前
【云架构】
开发语言·php
Chef_Chen12 分钟前
从0开始学习R语言--Day20-ARIMA与格兰杰因果检验
开发语言·学习·r语言
zh_xuan13 分钟前
c++ std::pair
开发语言·c++
CodeWithMe35 分钟前
【C/C++】EBO空基类优化介绍
开发语言·c++
404.Not Found1 小时前
Day46 Python打卡训练营
开发语言·python
love530love1 小时前
【PyCharm必会基础】正确移除解释器及虚拟环境(以 Poetry 为例 )
开发语言·ide·windows·笔记·python·pycharm
凌辰揽月1 小时前
Web后端基础(基础知识)
java·开发语言·前端·数据库·学习·算法
海奥华21 小时前
go中的接口返回设计思想
开发语言·后端·golang
lifallen1 小时前
深入浅出 Arrays.sort(DualPivotQuicksort):如何结合快排、归并、堆排序和插入排序
java·开发语言·数据结构·算法·排序算法
运维开发王义杰1 小时前
Python: 告别 ModuleNotFoundError, 解决 pipx 环境下 sshuttle 缺少 pydivert 依赖的终极指南
开发语言·python