日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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接口:返回錯(cuò)誤信息

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

作為一家“創(chuàng)意+整合+營銷”的成都網(wǎng)站建設(shè)機(jī)構(gòu),我們?cè)跇I(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 之類的信息來表示錯(cuò)誤,但是對(duì)于使用者來說,如果不查看相應(yīng)的 API 說明文檔,根本搞不清楚這個(gè)返回值究竟代表什么意思,比如返回 0 是成功還是失敗?

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

error 基本用法

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

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

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

創(chuàng)建一個(gè) error 最簡單的方法就是調(diào)用 errors.New 函數(shù),它會(huì)根據(jù)傳入的錯(cuò)誤信息返回一個(gè)新的 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 來返回一個(gè)錯(cuò)誤信息,與其他語言的異常相比,Go語言的方法相對(duì)更加容易、直觀。

自定義錯(cuò)誤類型

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

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


文章名稱:創(chuàng)新互聯(lián)GO教程:Go語言error接口:返回錯(cuò)誤信息
標(biāo)題路徑:http://m.5511xx.com/article/cdjioho.html