偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

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

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

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

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類(lèi)型,只支持Error()方法,所以沒(méi)辦法直接調(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é)任編輯:武曉燕 來(lái)源: 今日頭條
相關(guān)推薦

2021-04-30 09:04:11

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

2023-09-21 08:05:49

Mybatis插件開(kāi)發(fā)

2023-07-31 07:48:43

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

2021-08-05 06:54:05

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

2021-07-16 22:43:10

Go并發(fā)Golang

2021-04-01 10:51:55

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

2022-05-17 08:02:55

GoTryLock模式

2021-06-24 06:35:00

Go語(yǔ)言進(jìn)程

2021-03-24 06:06:13

Go并發(fā)編程Singlefligh

2022-02-23 09:36:11

GoRuby編程語(yǔ)言

2022-06-09 08:41:17

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

2024-02-22 17:15:22

JS垃圾回收機(jī)制

2022-06-02 07:11:13

JVMJava

2021-04-29 09:02:44

語(yǔ)言Go 處理

2023-12-05 07:14:27

AIGo

2021-11-15 10:29:39

Go語(yǔ)言類(lèi)型

2021-11-15 07:47:40

字符串位置存儲(chǔ)

2023-12-08 08:26:05

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

2019-07-15 07:58:10

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

2021-04-09 10:38:59

Go 語(yǔ)言數(shù)組與切片
點(diǎn)贊
收藏

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