自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一篇聊聊Go錯誤封裝機(jī)制

開發(fā) 前端
使用 %w 時,它會在格式化字符串中占據(jù)一個位置,并將其后的錯誤作為參數(shù)傳遞給 fmt.Errorf 或 fmt.Sprintf 函數(shù)。這將創(chuàng)建一個新的錯誤,包含了原始錯誤信息,并形成一個錯誤鏈。

%w 是用于錯誤包裝(Error Wrapping)的格式化動詞。它是用于 fmt.Errorf 和 fmt.Sprintf 函數(shù)中的一個特殊格式化動詞,用于將一個錯誤(或其他可打印的值)包裝在一個新的錯誤中。

使用 %w 時,它會在格式化字符串中占據(jù)一個位置,并將其后的錯誤作為參數(shù)傳遞給 fmt.Errorf 或 fmt.Sprintf 函數(shù)。這將創(chuàng)建一個新的錯誤,包含了原始錯誤信息,并形成一個錯誤鏈。

下面是一個示例,展示了如何使用 %w 來進(jìn)行錯誤包裝:

package main

import (
	"errors"
	"fmt"
)

func doSomething() error {
	return errors.New("something went wrong")
}

func main() {
	err := doSomething()

	// Wrap the original error with additional context
	wrappedErr := fmt.Errorf("encountered an issue: %w", err)

	fmt.Println(wrappedErr) // Output: encountered an issue: something went wrong
	if err, ok := wrappedErr.(interface{ Unwrap() error }); ok {
		// wrappedErr是error類型,只支持Error()方法,所以沒辦法直接調(diào)用Unwrap()。但是wrappedErr.(interface{ Unwrap() error })取出內(nèi)部的數(shù)據(jù)就可以調(diào)用Unwrap()了
		fmt.Println("internal error:", err.Unwrap())
	}
	fmt.Println(errors.Is(wrappedErr, err))                         // Output: true
	fmt.Println(errors.Is(err, fmt.Errorf("something went wrong"))) // Output: false
}

另外,還有一種interface{ Unwrap() []error },其實(shí)是多次用了%w的結(jié)果。

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2021-04-30 09:04:11

Go 語言結(jié)構(gòu)體type

2023-07-31 07:48:43

Java內(nèi)存虛擬機(jī)

2023-09-21 08:05:49

Mybatis插件開發(fā)

2021-07-16 22:43:10

Go并發(fā)Golang

2021-08-05 06:54:05

Go切片數(shù)據(jù)

2022-05-17 08:02:55

GoTryLock模式

2021-04-01 10:51:55

MySQL鎖機(jī)制數(shù)據(jù)庫

2022-06-09 08:41:17

Go網(wǎng)絡(luò)庫Gnet

2021-06-24 06:35:00

Go語言進(jìn)程

2021-03-24 06:06:13

Go并發(fā)編程Singlefligh

2022-02-23 09:36:11

GoRuby編程語言

2024-02-22 17:15:22

JS垃圾回收機(jī)制

2022-06-02 07:11:13

JVMJava

2021-04-29 09:02:44

語言Go 處理

2023-12-05 07:14:27

AIGo

2021-11-15 10:29:39

Go語言類型

2019-07-15 07:58:10

前端開發(fā)技術(shù)

2023-12-08 08:26:05

數(shù)據(jù)存儲持久性

2021-11-15 07:47:40

字符串位置存儲

2021-04-06 10:19:36

Go語言基礎(chǔ)技術(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號