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")
	}
}
相关推荐
考虑考虑9 小时前
docker compose V2版本新属性
运维·后端·自动化运维
浪子明X10 小时前
十六位账本怎样发现传输差错:Internet Checksum 生活类比
开发语言
GreenTea11 小时前
7000 万 QPS、500 PB:OpenAI 如何用一个 Python 存储平台撑住 10 亿用户
后端·架构
Flynt11 小时前
Java 27 升级实测:默认值动得比新特性多,有个老参数会让 JVM 直接起不来
java·jvm·后端
Bs_MoneyMagnet11 小时前
基于springboot+vue的个人健康管理系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·vue3·springboot3·计算机毕业设计
GreenTea11 小时前
OpenAI Agents API 上手实测:一次调用把整个 agent loop 甩给 OpenAI
前端·后端·算法
xiangyun6113 小时前
【408数据结构 08】队列:循环队列判空判满,408年年考,一次讲清
c语言·开发语言·数据结构·c++·算法
xiangyun6113 小时前
【408数据结构 06】双链表、循环链表、静态链表
c语言·开发语言·数据结构·c++·算法
Bs_MoneyMagnet14 小时前
基于springboot+vue的心理咨询预约与随访平台的设计与实现 源码+文档
vue.js·spring boot·后端·spring·毕业设计·旅游·计算机毕业设计
IT_陈寒15 小时前
Vue的响应式更新把我坑惨了,原来问题出在这
前端·人工智能·后端