国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Golang 中的 Errors 包詳解,你都了解嗎?

開發 后端
Errors 包提供了一些簡單易用的函數來處理和獲取錯誤信息,借助 Errors 包可以實現非常強大的錯誤處理功能。

在 Golang 中,errors 包是用于處理錯誤的標準庫, errors 包提供的功能比較簡單,使用起來非常方便。接下來就具體講解一下 errors 包提供的幾個函數。

errors.New

func New(text string) error

錯誤處理是開發過程中必不可少的,使用 errors.New 函數可以創建一個表示特定錯誤的對象。接受一個字符串類型的參數(用于描述錯誤信息),返回一個 error 類型的值。例如:

package main

import "errors"

func main() {
	err := errors.New("invalid input")
}

error 類型是 builtin 包中定義的一個接口,定義如下:

type error interface {
	Error() string
}

可以看出此接口定義了一個基本的 Error 方法,用于返回錯誤的描述信息。

package main

import (
	"errors"
	"fmt"
)

func main() {
	err := errors.New("invalid input")
	errDesc := err.Error()
	fmt.Println(errDesc) // 輸出 invalid input
}

errors.Is

func Is(err, target error) bool

用于判斷給定的錯誤是否是目標錯誤類型或者基于目標錯誤類型包裝過的錯誤,會遞歸檢查錯誤鏈,直到找到目標錯誤類型或者到達錯誤鏈的末尾。如果找到目標錯誤類型,則返回true,否則返回false。看個例子:

package main

import (
	"errors"
	"fmt"
)

func main() {
	err := errors.New("invalid input")
	err1 := errors.New("invalid input")
	err2 := fmt.Errorf("err2: [%w]", err)
	fmt.Println(errors.Is(err1, err)) // false
	fmt.Println(errors.Is(err2, err)) // true
}

因為 err 和 err1 都是使用 errors.New 函數創建的,所以使用 Is 判斷會返回 false。err2 是基于 err 包裝出來的,所以使用 Is 判斷會返回 true。

errors.AS

func As(err error, target any) bool

用于將錯誤轉換為特定類型的錯誤,As 函數會檢查 err 是否是 target 指向的類型的實例,如果是,將該實例賦值給 target 并返回 true。否則返回 false。看個例子:

package main

import (
	"errors"
	"fmt"
)

type MyError struct {
	Message string
}

func (e *MyError) Error() string {
	return e.Message
}
func main() {
	err := &MyError{
		Message: "This is a custom error",
	}
	var target *MyError
	if errors.As(err, &target) {
		fmt.Println("Custom error found:", target.Message)
	} else {
		fmt.Println("Custom error not found")
	}
}

使用 errors.As 來檢查 err 是否是 MyError 類型的實例,并將實例賦值給 target。運行一下示例看下效果

$ go run main.go
Custom error found: This is a custom error

這個功能通常用于處理不同類型的錯誤,根據錯誤的類型采取對應的處理方式。

errors.Unwrap

func Unwrap(err error) error

用于將一個錯誤對象展開,得到下一層錯誤對象,如果錯誤對象沒有下一層錯誤對象,則返回 nil。看個例子:

package main

import (
	"errors"
	"fmt"
)

func main() {
  originalErr := errors.New("original error")
	err := fmt.Errorf("error: %w", originalErr)
	unwrappedErr := errors.Unwrap(err)
	fmt.Println(unwrappedErr) // 輸出: original error
}

使用 fmt.Errorf 函數將 originalErr 做了一層包裝后得到 err,然后通過使用 Unwrap 將 err 解包并得包裝前的錯誤對象 originalErr。需要注意的是 Unwrap 只能展開被 fmt.Errorf 包裝的錯誤對象。如果想要展開其他類型的錯誤對象,可以使用類型斷言操作符 `.` 進行類型斷言。

小結

errors 包提供了一些簡單易用的函數來處理和獲取錯誤信息,借助 errors 包可以實現非常強大的錯誤處理功能。

責任編輯:姜華 來源: 今日頭條
相關推薦

2021-01-07 05:40:13

BLE模塊Android

2020-02-27 10:49:26

HTTPS網絡協議TCP

2021-03-28 09:26:30

HttpHttp協議網絡協議

2023-12-07 08:13:58

Java開發

2024-02-19 08:40:22

2018-06-21 07:25:04

2019-11-25 12:38:14

混合云云計算企業

2023-08-03 08:48:07

Golang接口

2023-11-27 15:02:37

BytesGolang

2012-02-06 13:52:33

JavaScript

2023-11-09 08:22:38

2025-01-21 00:00:00

權限模型RBAC

2023-10-18 08:22:38

BufioGolang

2023-08-02 09:07:27

Golangio 包

2023-12-11 07:40:00

CDN網絡服務器

2019-09-17 09:31:10

2023-06-26 07:32:43

Kubernetes容器

2023-08-31 09:28:12

Golang可導出函數

2023-09-26 07:38:53

c#Lambda表達式

2023-10-26 07:09:30

Golangrune字符
點贊
收藏

51CTO技術棧公眾號

www成人免费视频| 日韩在线小视频| 538在线观看| 亚洲国产一区二区三区在线观看| 男人的j进女人的j一区| 日韩视频免费中文字幕| 日韩精品视频久久| xxx.xxx欧美| 欧美日韩精品欧美日韩精品一综合| 97在线视频一区| 第九区2中文字幕| 中文在线综合| 中国人与牲禽动交精品| 校园春色欧美| 亚洲+变态+欧美+另类+精品| 国产精品国产自产拍高清av王其| 日韩av不卡播放| 精品国产精品| 日韩精品一二三四区| 色婷婷综合网站| 成人在线免费观看视频| 欧美一区二区三区视频免费| 精品少妇人妻av免费久久洗澡| 成人在线视频你懂的| 欧美一区二区三区四区视频| 别急慢慢来1978如如2| 手机在线一区二区三区| 欧美日本国产在线| 亚洲夫妻av| 欧美嫩在线观看| 天堂久久午夜av| 精品亚洲精品福利线在观看| 天天天干夜夜夜操| 99精品在线免费| 北条麻妃高清一区| 免费观看日韩电影| 国产精品中出一区二区三区| 亚洲大片av| 日韩国产欧美在线观看| 国产精品免费一区二区| 四虎5151久久欧美毛片| 永久免费毛片在线播放不卡| av在线首页| 在线视频亚洲一区| 922tv免费观看在线| 亚洲另类中文字| 粉嫩av一区| 亚洲欧洲av在线| 三级av在线| 欧美精品一区视频| 亚洲精品大全| 国产精品免费视频久久久| 亚洲一级高清| 欧美黄网在线观看| 一区二区三区中文在线观看| 日本私人影院在线观看| 91精品欧美综合在线观看最新| 国产私拍福利精品视频二区| 91精品国产精品| 亚洲毛片av| 欧美精品一区免费| 精品国产鲁一鲁一区二区张丽 | 色婷婷综合久久久久中文字幕 | 亚洲精品国产精品自产a区红杏吧 亚洲精品国产精品乱码不99按摩 亚洲精品国产精品久久清纯直播 亚洲精品国产精品国自产在线 | 日韩影视精品| 成人午夜免费视频| 97影视在线观看| 日韩一二在线观看| 日本一区二区乱| 国产综合色一区二区三区| 不卡av在线免费观看| 最新黄色片网站| 亚洲精品综合久久中文字幕| 欧美丝袜一区| 白白操在线视频| 日韩欧美在线观看| 免费看日产一区二区三区| 久久婷婷人人澡人人喊人人爽| 久久网站热最新地址| 欧美私人网站| 国产成人精品av| 成人国产在线观看| 久草资源在线观看| 欧美在线视频一二三| 国产一区二区三区精品欧美日韩一区二区三区 | 国产精品久久占久久| 精品人妻人人做人人爽| 91国偷自产一区二区三区成为亚洲经典| 自拍一区在线观看| 91国产在线免费观看| 久久精品人人做人人综合| 超碰在线免费播放| 国产日韩专区在线| 国产三级精品在线| 美女网站视频一区| 久久99国产精品| 亚洲成a人v欧美综合天堂下载 | 亚洲午夜电影| 丁香资源影视免费观看| 国产一区二区三区视频| 久久国产日本精品| 精品999视频| 国产精品一区二区久久久久| 久久夜色精品国产噜噜av| av成人影院在线| 蜜桃视频在线观看91| 亚洲第一av色| 奇米777国产一区国产二区| 玖玖精品在线视频| 欧美一级专区免费大片| 欧美电影一二区| 全部a∨一极品视觉盛宴| 欧美成人合集magnet| 国产精品一区二区在线观看不卡 | 最新av在线免费观看| 欧美日韩国产欧美日美国产精品| 欧美一区二区三区高清视频| 久久婷婷综合色| 欧美成人免费一级人片100| 国产高清成人在线| 影音先锋男人在线资源| 国产一区不卡在线观看| 欧美亚洲一区二区在线| 欧美另类女人| av播放在线观看| 狠狠色综合网站久久久久久久| 色哟哟亚洲精品| 欧美日韩国产亚洲一区| 黄色在线播放| 痴汉一区二区三区| 色乱码一区二区三区88| 你懂的国产精品永久在线| 在线观看视频你懂的| 91精品久久久久久久久中文字幕| 午夜精品久久久久久久久久久 | 国产精品劲爆视频| 亚洲欧美一区二区久久| 最新亚洲精品| 国产女优裸体网站| 国产精品直播网红| 91福利视频在线| 米奇777在线欧美播放| 欧美久久天堂| 国产综合av在线| 久久免费视频在线观看| 一区二区三区四区高清精品免费观看| av中文字幕一区二区| 欧美色18zzzzxxxxx| 狠狠色综合色区| 精品爽片免费看久久| 波多野结衣中文字幕一区| 超碰成人在线免费| 亚洲精品视频在线免费| 免费99视频| 中文字幕亚洲无线码在线一区| 国产农村妇女毛片精品久久麻豆| 成人激情在线| 91在线免费看| 日本老太婆做爰视频| 欧美第一黄色网| 图片区小说区区亚洲影院| 亚洲影音先锋| 色婷婷成人网| 在线观看国产视频一二三| 成人区精品一区二区婷婷| 阿v视频在线观看| 国产精品啊啊啊| 91精品久久久久久久蜜月| 免费观看亚洲视频大全| 黄色在线看片| 欧美18一19xxx性| 伊人永久在线| 最新二区三区av| 成年网站免费| 日本精品免费| 欧美不卡一二三| 国产午夜精品美女毛片视频| 国产99亚洲| heyzo高清国产精品| 国产喷水theporn| 久久riav二区三区| 按摩亚洲人久久| 欧美日韩国产专区| 国产一区二区福利| 国产主播一区二区三区四区| 国产伊人精品在线| 国产乱人伦真实精品视频| 国产精品精品久久久久久| 欧亚精品在线观看| 国产成人一区二区三区电影| 国产aⅴ夜夜欢一区二区三区| 午夜精品久久久久久久99热浪潮 | www.成人| 偷偷www综合久久久久久久| 在线一区电影| www.欧美精品一二区| 高清在线不卡av| 久久蜜桃精品| 91精品成人| 亚洲九九在线|