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")
	}
}
相关推荐
小陈工1 小时前
Python安全编程实践:常见漏洞与防护措施
运维·开发语言·人工智能·python·安全·django·开源
zopple6 小时前
常见的 Spring 项目目录结构
java·后端·spring
是娇娇公主~7 小时前
C++ 中 std::deque 的原理?它内部是如何实现的?
开发语言·c++·stl
SuperEugene7 小时前
Axios 接口请求规范实战:请求参数 / 响应处理 / 异常兜底,避坑中后台 API 调用混乱|API 与异步请求规范篇
开发语言·前端·javascript·vue.js·前端框架·axios
lars_lhuan8 小时前
Go WaitGroup 源码解析
golang
xuxie998 小时前
N11 ARM-irq
java·开发语言
cjy0001118 小时前
springboot的 nacos 配置获取不到导致启动失败及日志不输出问题
java·spring boot·后端
wefly20179 小时前
从使用到原理,深度解析m3u8live.cn—— 基于 HLS.js 的 M3U8 在线播放器实现
java·开发语言·前端·javascript·ecmascript·php·m3u8
小江的记录本9 小时前
【事务】Spring Framework核心——事务管理:ACID特性、隔离级别、传播行为、@Transactional底层原理、失效场景
java·数据库·分布式·后端·sql·spring·面试
sheji34169 小时前
【开题答辩全过程】以 基于springboot的校园失物招领系统为例,包含答辩的问题和答案
java·spring boot·后端