日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)GO教程:Go語言error接口:返回錯誤信息

錯誤處理在每個編程語言中都是一項(xiàng)重要內(nèi)容,通常開發(fā)中遇到的分為異常與錯誤兩種,Go語言中也不例外。本節(jié)我們主要來學(xué)習(xí)一下Go語言中的錯誤處理。

作為一家“創(chuàng)意+整合+營銷”的成都網(wǎng)站建設(shè)機(jī)構(gòu),我們在業(yè)內(nèi)良好的客戶口碑。成都創(chuàng)新互聯(lián)提供從前期的網(wǎng)站品牌分析策劃、網(wǎng)站設(shè)計(jì)、網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)、創(chuàng)意表現(xiàn)、網(wǎng)頁制作、系統(tǒng)開發(fā)以及后續(xù)網(wǎng)站營銷運(yùn)營等一系列服務(wù),幫助企業(yè)打造創(chuàng)新的互聯(lián)網(wǎng)品牌經(jīng)營模式與有效的網(wǎng)絡(luò)營銷方法,創(chuàng)造更大的價(jià)值。

在C語言中通過返回 -1 或者 NULL 之類的信息來表示錯誤,但是對于使用者來說,如果不查看相應(yīng)的 API 說明文檔,根本搞不清楚這個返回值究竟代表什么意思,比如返回 0 是成功還是失???

針對這樣的情況,Go語言中引入 error 接口類型作為錯誤處理的標(biāo)準(zhǔn)模式,如果函數(shù)要返回錯誤,則返回值類型列表中肯定包含 error。error 處理過程類似于C語言中的錯誤碼,可逐層返回,直到被處理。

error 基本用法

Go語言中返回的 error 類型究竟是什么呢?查看Go語言的源碼就會發(fā)現(xiàn) error 類型是一個非常簡單的接口類型,如下所示:

// The error built-in interface type is the conventional interface for
// representing an error condition, with the nil value representing no error.
type error interface {
    Error() string
}

error 接口有一個簽名為 Error() string 的方法,所有實(shí)現(xiàn)該接口的類型都可以當(dāng)作一個錯誤類型。Error() 方法給出了錯誤的描述,在使用 fmt.Println 打印錯誤時(shí),會在內(nèi)部調(diào)用 Error() string 方法來得到該錯誤的描述。

一般情況下,如果函數(shù)需要返回錯誤,就將 error 作為多個返回值中的最后一個(但這并非是強(qiáng)制要求)。

創(chuàng)建一個 error 最簡單的方法就是調(diào)用 errors.New 函數(shù),它會根據(jù)傳入的錯誤信息返回一個新的 error,示例代碼如下:

package main

import (
    "errors"
    "fmt"
    "math"
)

func Sqrt(f float64) (float64, error) {
    if f < 0 {
        return -1, errors.New("math: square root of negative number")
    }
    return math.Sqrt(f), nil
}

func main() {
    result, err := Sqrt(-13)
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Println(result)
    }
}

運(yùn)行結(jié)果如下:

math: square root of negative number

上面代碼中簡單介紹了使用 errors.New 來返回一個錯誤信息,與其他語言的異常相比,Go語言的方法相對更加容易、直觀。

自定義錯誤類型

除了上面的 errors.New 用法之外,我們還可以使用 error 接口自定義一個 Error() 方法,來返回自定義的錯誤信息。

package main

import (
    "fmt"
    "math"
)

type dualError struct {
    Num     float64
    problem string
}

func (e dualError) Error() string {
    return fmt.Sprintf("Wrong!!!,because \"%f\" is a negative number", e.Num)
}

func Sqrt(f float64) (float64, error) {
    if f < 0 {
        return -1, dualError{Num: f}
    }
    return math.Sqrt(f), nil
}
func main() {
    result, err := Sqrt(-13)
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Println(result)
    }
}

運(yùn)行結(jié)果如下:

Wrong!!!,because "-13.000000" is a negative number


本文標(biāo)題:創(chuàng)新互聯(lián)GO教程:Go語言error接口:返回錯誤信息
文章地址:http://www.dlmjj.cn/article/cdjioho.html