開心檔之Go教程
Go 語言透過內建的錯誤介面提供了非常簡單的錯誤處理機制。
error型別是一個介面型別,這是它的定義:
type error interface { Error() string}
我們可以在編碼中透過實現 error 介面型別來生成錯誤資訊。
函式通常在最後的返回值中返回錯誤資訊。使用errors.New 可返回一個錯誤資訊:
func Sqrt(f float64) (float64, error) { if f < 0 { return 0, errors.New("math: square root of negative number") } // 實現}
在下面的例子中,我們在呼叫Sqrt的時候傳遞的一個負數,然後就得到了non-nil的error物件,將此物件與nil比較,結果為true,所以fmt.Println(fmt包在處理error時會呼叫Error方法)被呼叫,以輸出錯誤,請看下面呼叫的示例程式碼:
result, err:= Sqrt(-1) if err != nil { fmt.Println(err) }
package main
import (
"fmt"
)
// 定義一個 DivideError 結構
type DivideError struct {
dividee int
divider int
}
// 實現 `error` 介面
func (de *DivideError) Error() string {
strFormat := `
Cannot proceed, the divider is zero.
dividee: %d
divider: 0
`
return fmt.Sprintf(strFormat, de.dividee)
}
// 定義 `int` 型別除法運算的函式
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)
}
// 當除數為零的時候會返回錯誤資訊
if _, errorMsg := Divide(100, 0); errorMsg != "" {
fmt.Println("errorMsg is: ", errorMsg)
}
}
執行以上程式,輸出結果為:
100
/10
=
10
errorMsg is:
Cannot
proceed,
the
divider
is
zero.
dividee:
100
divider:
0
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70026554/viewspace-2943186/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 開心檔之Go 併發Go
- 開心檔之Go 語言常量Go
- 開心檔之Go 錯誤處理Go
- 開心檔之Go 語言環境安裝Go
- 開心檔之MySQL 管理MySql
- 開心檔之C++ 引用C++
- 開心檔之MySQL ALTER命令MySql
- 開心檔之C++ 運算子C++
- 開心檔之C++ 多型C++多型
- 開心檔之MySQL 複製表MySql
- 開心檔之C++ 數字C++
- 開心檔之Vue.js 路由Vue.js路由
- 開心檔之Java 9 新特性Java
- 開心檔之MySQL 正規表示式MySql
- 開心檔之python 推導式Python
- 開心檔之Java switch case 語句Java
- 開心檔之Java 變數型別Java變數型別
- 開心檔-軟體開發入門教程網之Node.js 回撥函式Node.js函式
- 開心檔之C++ 訊號處理C++
- 開心檔之C++ 前處理器C++
- 開心檔之C++ 修飾符型別C++型別
- 開心檔之Python3 資料結構Python資料結構
- 開心檔之C++ 過載運算子和過載函式C++函式
- go開源庫之jwt-go使用GoJWT
- 開心檔-Node.js入門篇2Node.js
- go開源庫之cron使用Go
- Xamarin Essentials教程開啟檔案
- go泛型教程Go泛型
- Go Web開發(Gin框架)簡易入門教程GoWeb框架
- Go 語言開源 Excelize 基礎庫影片教程GoExcelize
- Go的位操作(&, |, ^, &^) 之我裂開了!Go
- PHP之開啟檔案PHP
- DBF檔案怎麼開啟?DBF檔案的開啟方法教程
- Go 官方出品泛型教程:如何開始使用泛型Go泛型
- go學習之檔案讀取問題(需更新)Go
- 命令列搞一切之curl 的開心應用命令列
- go語言教程哪裡有?go 語言優秀開源專案彙總Go
- Go檔案操作Go