国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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)論 (共 條)

分享到微博請遵守國家法律
昌平区| 海伦市| 额敏县| 邹城市| 岳池县| 嘉义市| 临洮县| 大关县| 乐亭县| 麻阳| 黄陵县| 泸水县| 大英县| 靖西县| 佛山市| 汤阴县| 晋江市| 兰西县| 许昌县| 义乌市| 清苑县| 甘泉县| 浑源县| 庆阳市| 临邑县| 沈阳市| 乐都县| 兖州市| 乐至县| 扶余县| 巢湖市| 凤山县| 鄂伦春自治旗| 福州市| 丘北县| 闽侯县| 灌云县| 昌图县| 延长县| 广汉市| 南涧|