最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

開心檔之Go 錯(cuò)誤處理

2023-03-31 17:27 作者:是愛你的君君呀  | 我要投稿

Go 錯(cuò)誤處理

Go 語言通過內(nèi)置的錯(cuò)誤接口提供了非常簡單的錯(cuò)誤處理機(jī)制。

error類型是一個(gè)接口類型,這是它的定義:

type error interface { ? ?Error() string}

我們可以在編碼中通過實(shí)現(xiàn) error 接口類型來生成錯(cuò)誤信息。

函數(shù)通常在最后的返回值中返回錯(cuò)誤信息。使用errors.New 可返回一個(gè)錯(cuò)誤信息:

func Sqrt(f float64) (float64, error) { ? ?if f < 0 { ? ? ? ?return 0, errors.New("math: square root of negative number") ? ?} ? ?// 實(shí)現(xiàn)}

在下面的例子中,我們在調(diào)用Sqrt的時(shí)候傳遞的一個(gè)負(fù)數(shù),然后就得到了non-nil的error對(duì)象,將此對(duì)象與nil比較,結(jié)果為true,所以fmt.Println(fmt包在處理error時(shí)會(huì)調(diào)用Error方法)被調(diào)用,以輸出錯(cuò)誤,請看下面調(diào)用的示例代碼:

result, err:= Sqrt(-1) if err != nil { ? fmt.Println(err) }

實(shí)例

實(shí)例

package main

import (
"fmt"
)

// 定義一個(gè) DivideError 結(jié)構(gòu)
type DivideError struct {
dividee int
divider int
}

// 實(shí)現(xiàn) `error` 接口
func (de *DivideError) Error() string {
strFormat := `
Cannot proceed, the divider is zero.
dividee: %d
divider: 0
`
return fmt.Sprintf(strFormat, de.dividee)
}

// 定義 `int` 類型除法運(yùn)算的函數(shù)
func Divide(varDividee int, varDivider int) (result int, errorMsg string) {
if varDivider == 0 {
dData := DivideError{
dividee: varDividee,
divider: varDivider,
}
errorMsg = dData.Error()
return
} else {
return varDividee / varDivider, ""
}

}

func main() {

// 正常情況
if result, errorMsg := Divide(100, 10); errorMsg == "" {
fmt.Println("100/10 = ", result)
}
// 當(dāng)除數(shù)為零的時(shí)候會(huì)返回錯(cuò)誤信息
if _, errorMsg := Divide(100, 0); errorMsg != "" {
fmt.Println("errorMsg is: ", errorMsg)
}

}

執(zhí)行以上程序,輸出結(jié)果為:

100/10 = ?10errorMsg is: ?????Cannot proceed, the divider is zero.????dividee: 100????divider: 0



開心檔之Go 錯(cuò)誤處理的評(píng)論 (共 條)

分享到微博請遵守國家法律
五常市| 松江区| 浏阳市| 乌鲁木齐市| 台湾省| 得荣县| 张家口市| 盐边县| 无极县| 建湖县| 玉山县| 年辖:市辖区| 卓资县| 龙泉市| 菏泽市| 林州市| 左云县| 集安市| 盘锦市| 永吉县| 汪清县| 徐州市| 满洲里市| 外汇| 渭源县| 连州市| 临澧县| 巫山县| 剑河县| 遵义市| 乃东县| 德保县| 始兴县| 滨海县| 金坛市| 柏乡县| 民勤县| 海丰县| 垦利县| 达尔| 邵阳县|