golang 常用的占位符 %w, %v, %s

在 Go 语言中,fmt 包提供了一些常用的占位符,用于格式化不同类型的输出。

1. %s - 字符串

用于输出字符串(如果是切片,则输出其字节内容)。

go

fmt.Printf("%s\n", "hello") // hello

2. %v - 默认格式

这个占位符会使用默认格式打印值。

对于结构体、数组、切片等复杂类型,%v 会以一种通用的方式显示它们。

go

fmt.Printf("%v\n", 123) // 123

fmt.Printf("%v\n", "hello") // hello

fmt.Printf("%v\n", []int{1, 2, 3}) // [1 2 3]

3. % w

在 Go 语言中,%w 是 fmt 包中的一个占位符,主要用于 fmt.Errorf 函数中,用来包装错误。它的作用是将一个错误对象嵌套在新的错误消息中,并保持原始错误的上下文。

具体来说,%w 占位符的使用场景通常是为了创建一个新的错误对象,同时保留原始的错误,便于后续的错误处理,比如判断错误的类型或链式错误追踪。

判断原始错误,方便定位:

go 复制代码
package main

import (
	"errors"
	"fmt"
)

func main() {
	// 创建一个原始的错误
	originalErr := errors.New("original error")

	// 使用 %w 来包装原始错误
	err := fmt.Errorf("wrapped error: %w", originalErr)

	// 打印包装后的错误
	fmt.Println(err)
	
	// 使用 errors.Is 来判断原始错误
	if errors.Is(err, originalErr) {
		fmt.Println("The error is the original error")
	}
}
相关推荐
Soofjan2 分钟前
Go Map SwissTable GetMap 查找流程(源码笔记 3)
后端
爱装代码的小瓶子6 分钟前
【C++与Linux进阶】详解信号的捕获:内核态和用户态的转换
linux·开发语言·c++
Soofjan6 分钟前
Go Map SwissTable ModMap 插入与更新(源码笔记 4)
后端
java1234_小锋11 分钟前
Java高频面试题:Mysql里where1=1会不会影响性能?
java·开发语言
小白学大数据19 分钟前
对比分析:Python爬虫模拟登录的3种主流实现方式
开发语言·爬虫·python·数据分析
guygg8823 分钟前
使用Zernike多项式进行光学镜面像差拟合的MATLAB实现
开发语言·matlab
qq_124987075327 分钟前
基于springboot的微信小程序的博物馆文创系统的设计与实现(源码+论文+部署+安装)
java·spring boot·后端·spring·微信小程序·毕业设计·计算机毕设
krack716x28 分钟前
第1天:面向对象与基础语法
java·开发语言
不想看见40435 分钟前
Shuffle an Array随机与取样--力扣101算法题解笔记
开发语言·c++·算法
bu_shuo37 分钟前
Microsoft Visual C++的相关文件.sln
开发语言·c++·vc2010