国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Golang > 正文

GO語(yǔ)言標(biāo)準(zhǔn)錯(cuò)誤處理機(jī)制error用法實(shí)例

2020-04-01 19:23:15
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章主要介紹了GO語(yǔ)言標(biāo)準(zhǔn)錯(cuò)誤處理機(jī)制error用法,實(shí)例分析了錯(cuò)誤處理機(jī)制的具體用法,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
 

本文實(shí)例講述了GO語(yǔ)言標(biāo)準(zhǔn)錯(cuò)誤處理機(jī)制error用法。分享給大家供大家參考。具體分析如下:

在 Golang 中,錯(cuò)誤處理機(jī)制一般是函數(shù)返回時(shí)使用的,是對(duì)外的接口,而異常處理機(jī)制 panic-recover 一般用在函數(shù)內(nèi)部。

error 類型介紹

error 類型實(shí)際上是抽象了 Error() 方法的 error 接口,Golang 使用該接口進(jìn)行標(biāo)準(zhǔn)的錯(cuò)誤處理。

復(fù)制代碼代碼如下:
type error interface {
 Error() string
}

一般情況下,如果函數(shù)需要返回錯(cuò)誤,就將 error 作為多個(gè)返回值中的最后一個(gè)(但這并非是強(qiáng)制要求)。參考模型:
復(fù)制代碼代碼如下:
func Foo(param int) (n int, err error) {
 // ...
}

 

if n, err := Foo(0); err != nil {
        // 錯(cuò)誤處理
}


這就是 error 的使用方法,與其他語(yǔ)言的異常相比,Golang 的方法相對(duì)更加容易、直觀。

 

代碼1:經(jīng)典使用方法

復(fù)制代碼代碼如下:
package main

 

import (
 "errors"
 "fmt"
)

func requireDual(n int) (int, error) {
 if n&1 == 1 {
  return -1, errors.New("您輸入不是雙數(shù)") //生成一個(gè)簡(jiǎn)單的 error 類型
 }

 return n, nil
}

func main() {
 if result, err := requireDual(101); err != nil {
  fmt.Println("錯(cuò)誤:", err)
 } else {
  fmt.Println("結(jié)果:", result)
 }
}


輸出結(jié)果:

 

錯(cuò)誤: 您輸入不是雙數(shù)

你有沒有覺得 Golang 的這種錯(cuò)誤的處理機(jī)制非常的簡(jiǎn)潔啊,呵呵!

代碼2:擴(kuò)充下上面的代碼,帶自定義參數(shù)的錯(cuò)誤輸出

復(fù)制代碼代碼如下:
package main

 

import (
 "fmt"
)

type dualError struct {
 Num     int
 problem string
}

func (e dualError) Error() string {
 return fmt.Sprintf("參數(shù)不正確,因?yàn)?"%d/"不是雙數(shù)", e.Num)
}

func requireDual(n int) (int, error) {
 if n&1 == 1 {
  return -1, dualError{Num: n}
 }

 return n, nil
}

func main() {
 if result, err := requireDual(101); err != nil {
  fmt.Println("錯(cuò)誤:", err)
 } else {
  fmt.Println("結(jié)果:", result)
 }
}


輸出結(jié)果

 

錯(cuò)誤: 參數(shù)不正確,因?yàn)?quot;101"不是雙數(shù)

希望本文所述對(duì)大家的GO語(yǔ)言程序設(shè)計(jì)有所幫助。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 乾安县| 南充市| 旬阳县| 靖宇县| 岫岩| 平泉县| 北碚区| 阳高县| 乐亭县| 松桃| 黔南| 枣庄市| 临湘市| 全椒县| 宁德市| 常州市| 井陉县| 都昌县| 天镇县| 伊春市| 营山县| 沙雅县| 通榆县| 东乌珠穆沁旗| 明光市| 铁力市| 蕲春县| 淮安市| 游戏| 基隆市| 巧家县| 揭阳市| 南部县| 宜兴市| 射洪县| 清水河县| 邛崃市| 旬邑县| 奎屯市| 武山县| 康平县|