chm編譯慢?Go中提供了兩種處理異常的方式type error interface{
Error() string
}
,現在小編就來說說關于chm編譯慢?下面内容希望能幫助到你,我們來一起看看吧!
chm編譯慢
Go中提供了兩種處理異常的方式
- 一種是程序發生異常時, 将異常信息反饋給使用者
- 一種是程序發生異常時, 立刻退出終止程序繼續運行
- Go沒有異常機制
- error類型實現了error接口
type error interface{
Error() string
}
Go語言中提供了兩種創建異常信息的方式
- 方式一: 可以通過errors.News來快速創建錯誤實例
errors.New("n must be in the range [0,10]")
package error_Test
import (
"errors"
"testing"
)
func GetFibonacci(n int) ([]int, error) {
if n < 2 || n > 100 { // 設置error返回
return nil, errors.New("n's should be in [2,100]")
}
fibList := []int{1, 1}
for i := 2; i < n; i {
fibList = append(fibList, fibList[i-2] fibList[i-1])
}
return fibList, nil
}
func TestGetFibonacci(t *testing.T) {
if v, err := GetFibonacci(-10); err != nil {
t.Error(err)
} else {
t.Log(v)
}
}
- 方式二: 通過fmt包中的Errorf函數創建錯誤信息, 然後打印
package main
import "fmt"
func main() {
// 1.創建錯誤信息
var err error = fmt.Errorf("這裡是錯誤信息")
// 2.打印錯誤信息
fmt.Println(err) // 這裡是錯誤信息
}
- Go語言中創建異常信息其實都是通過一個error接口實現的
- Go語言再builtin包中定義了一個名稱叫做error的接口,源碼如下
package builtin
// 定義了一個名稱叫做error的接口
// 接口中聲明了一個叫做Error() 的方法
type error interface {
Error() string
}
- 在errors包中定義了一個名稱叫做做errorString的結構體, 利用這個結構體實現了error接口中指定的方法
- 并且在errors 包中還提供了一個New方法, 用于創建實現了error接口的結構體對象, 并且在創建時就會把指定的字符串傳遞給這個結構體
// 指定包名為errors
package errors
// 定義了一個名稱叫做errorString的結構體, 裡面有一個字符串類型屬性s
type errorString struct {
s string
}
// 實現了error接口中的Error方法
// 内部直接将結構體中保存的字符串返回
func (e *errorString) Error() string {
return e.s
}
// 定義了一個New函數, 用于創建異常信息
// 注意: New函數的返回值是一個接口類型
func New(text string) error {
// 返回一個創建好的errorString結構體地址
return &errorString{text}
}
- fmt包中Errorf底層的實現原理其實就是在内部自動調用了errors包中的New函數
func Errorf(format string, a ...interface{}) error {
return errors.New(Sprintf(format, a...))
}