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

Go中“哨兵錯(cuò)誤”說法的由來及使用建議

開發(fā) 前端
本文追溯了“哨兵錯(cuò)誤”概念的提出來源,算是比較官方的。同時(shí)介紹了函數(shù)返回哨兵錯(cuò)誤時(shí)需要包裝后再返回。

大家好,我是漁夫子。

前些天有網(wǎng)友問我,在golang的錯(cuò)誤處理中,“哨兵錯(cuò)誤(sentinel error)”這個(gè)詞的出處。之前我也只是在一些書籍和資料中見到過,也沒深究。當(dāng)這個(gè)網(wǎng)友問了我之后,就深入的翻了翻資料,在golang的官方博客中找到了這個(gè)詞的提法,也算是比較官方的了吧。如下:https://go.dev/blog/go1.13-errors

圖片圖片

因?yàn)樵趃olang中錯(cuò)誤也被當(dāng)做值來處理的。所以是叫做錯(cuò)誤的哨兵值,也就是大家常看到的哨兵錯(cuò)誤。

哨兵錯(cuò)誤注意事項(xiàng)

在go的官方博客中也提到,哨兵錯(cuò)誤是包級別的,可以用于在包外進(jìn)行錯(cuò)誤值的判斷。如下:

圖片圖片

但是,這樣會造成包和包之間的依賴。如果哨兵錯(cuò)誤做了修改,那么之前依賴該錯(cuò)誤的所有包都需要更改。

但在go1.13版本之后,增加了errors.Is方法。那么就建議,如果一個(gè)函數(shù)的返回值是哨兵錯(cuò)誤,那么應(yīng)該對該哨兵錯(cuò)誤進(jìn)行包裝后再返回。同時(shí),在調(diào)用方使用errors.Is函數(shù)來判斷是否是某個(gè)具體的哨兵錯(cuò)誤。如下:

圖片圖片

總結(jié)

本文追溯了“哨兵錯(cuò)誤”概念的提出來源,算是比較官方的。同時(shí)介紹了函數(shù)返回哨兵錯(cuò)誤時(shí)需要包裝后再返回。


責(zé)任編輯:武曉燕 來源: Go學(xué)堂
相關(guān)推薦

2018-03-23 09:00:00

開源ArduinoDebian

2021-09-27 15:33:48

Go 開發(fā)技術(shù)

2021-09-27 10:04:03

Go程序處理

2010-12-09 10:20:59

2024-08-19 01:10:00

RedisGo代碼

2023-12-27 08:12:04

切片Go語言

2010-03-22 16:18:44

2018-05-28 22:44:17

代碼腐化程序員

2010-08-06 13:53:12

RIP協(xié)議

2009-07-20 15:39:32

ASP.NET緩存

2023-10-26 15:49:53

Go日志

2009-08-18 10:48:25

C#事件

2021-04-29 09:02:44

語言Go 處理

2023-10-26 12:05:14

Golang開發(fā)

2025-03-31 08:00:00

Django開發(fā)Python

2014-11-17 10:05:12

Go語言

2011-03-22 14:58:08

Nagios

2010-07-05 10:38:49

網(wǎng)絡(luò)層次協(xié)議

2010-07-02 12:02:11

eMule協(xié)議

2021-09-15 07:56:33

函數(shù)類型Go
點(diǎn)贊
收藏

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