欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

GO語言標準錯誤處理機制error用法實例

 更新時間:2014年12月03日 16:26:14   投稿:shichen2014  
這篇文章主要介紹了GO語言標準錯誤處理機制error用法,實例分析了錯誤處理機制的具體用法,具有一定的參考借鑒價值,需要的朋友可以參考下

本文實例講述了GO語言標準錯誤處理機制error用法。分享給大家供大家參考。具體分析如下:

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

error 類型介紹

error 類型實際上是抽象了 Error() 方法的 error 接口,Golang 使用該接口進行標準的錯誤處理。

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

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

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


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

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

復制代碼 代碼如下:
package main

import (
 "errors"
 "fmt"
)

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

 return n, nil
}

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


輸出結果:

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

你有沒有覺得 Golang 的這種錯誤的處理機制非常的簡潔啊,呵呵!

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

復制代碼 代碼如下:
package main

import (
 "fmt"
)

type dualError struct {
 Num     int
 problem string
}

func (e dualError) Error() string {
 return fmt.Sprintf("參數(shù)不正確,因為\"%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("錯誤:", err)
 } else {
  fmt.Println("結果:", result)
 }
}


輸出結果

錯誤: 參數(shù)不正確,因為"101"不是雙數(shù)

希望本文所述對大家的GO語言程序設計有所幫助。

相關文章

  • golang時間字符串和時間戳轉(zhuǎn)換的案例

    golang時間字符串和時間戳轉(zhuǎn)換的案例

    這篇文章主要介紹了golang時間字符串和時間戳轉(zhuǎn)換的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Golang控制通道實現(xiàn)協(xié)程等待詳解

    Golang控制通道實現(xiàn)協(xié)程等待詳解

    這篇文章主要介紹了Golang控制通道實現(xiàn)協(xié)程等待,通道是Go語言程序的并發(fā)體goroutine是它們之間的通信機制。一個通道是一個通信機制,它可以讓一個goroutine通過它給另一個goroutine發(fā)送值信息。每個通道都有一個特殊的類型,也就是channels可發(fā)送數(shù)據(jù)的類型
    2022-11-11
  • Golang在Window環(huán)境使用Imagick7的過程

    Golang在Window環(huán)境使用Imagick7的過程

    這篇文章主要介紹了Golang在Window環(huán)境使用Imagick7的過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-11-11
  • Golang?實現(xiàn)Redis?協(xié)議解析器的解決方案

    Golang?實現(xiàn)Redis?協(xié)議解析器的解決方案

    這篇文章主要介紹了Golang???實現(xiàn)?Redis?協(xié)議解析器,本文將分別介紹Redis 通信協(xié)議 以及 協(xié)議解析器 的實現(xiàn),若您對協(xié)議有所了解可以直接閱讀協(xié)議解析器部分,需要的朋友可以參考下
    2022-10-10
  • 淺談go中切片比數(shù)組好用在哪

    淺談go中切片比數(shù)組好用在哪

    數(shù)組和切片都是常見的數(shù)據(jù)結構,本文將介紹Go語言中數(shù)組和切片的基本概念,同時詳細探討切片的優(yōu)勢,感興趣的可以了解下
    2023-06-06
  • GO語言基本數(shù)據(jù)類型總結

    GO語言基本數(shù)據(jù)類型總結

    這篇文章主要介紹了GO語言基本數(shù)據(jù)類型,較為詳細的總結了GO語言的基本數(shù)據(jù)類型,對于GO語言的學習有一定的借鑒參考價值,需要的朋友可以參考下
    2014-12-12
  • 淺析Golang如何向已關閉的chan讀寫數(shù)據(jù)

    淺析Golang如何向已關閉的chan讀寫數(shù)據(jù)

    這篇文章主要為大家詳細介紹了Golang如何向已關閉的chan讀寫數(shù)據(jù),文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-02-02
  • Go語言實現(xiàn)AES加密并編寫一個命令行應用程序

    Go語言實現(xiàn)AES加密并編寫一個命令行應用程序

    密碼學中的高級加密標準(Advanced Encryption Standard,AES),又稱Rijndael加密法,是經(jīng)常采用的一種區(qū)塊加密標準。本文就來用Go語言實現(xiàn)AES加密算法,需要的可以參考一下
    2023-02-02
  • Golang中優(yōu)秀的消息隊列NSQ基礎安裝及使用詳解

    Golang中優(yōu)秀的消息隊列NSQ基礎安裝及使用詳解

    這篇文章主要介紹了Golang中優(yōu)秀的消息隊列NSQ基礎安裝及使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Go語言結構化日志slog的用法解析

    Go語言結構化日志slog的用法解析

    go?1.21.0?版本引入了一個新的包?log/slog,該包提供了結構化日志的功能,本文小編就來和大家聊聊log/slog?包的使用,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-10-10

最新評論