mirror of
https://github.com/gopl-zh/gopl-zh.github.com.git
synced 2025-12-17 11:14:20 +08:00
@@ -1,7 +1,7 @@
|
||||
## 5.4. 錯誤
|
||||
|
||||
|
||||
在Go中有一部分函數總是能成功的運行。比如string.Contains和strconv.FormatBool函數,對各種可能的輸入都做了良好的處理,使得運行時幾乎不會失敗,除非遇到災難性的、不可預料的情況,比如運行時的內存溢出。導致這種錯誤的原因很複雜,難以處理,從錯誤中恢複的可能性也很低。
|
||||
在Go中有一部分函數總是能成功的運行。比如strings.Contains和strconv.FormatBool函數,對各種可能的輸入都做了良好的處理,使得運行時幾乎不會失敗,除非遇到災難性的、不可預料的情況,比如運行時的內存溢出。導致這種錯誤的原因很複雜,難以處理,從錯誤中恢複的可能性也很低。
|
||||
|
||||
還有一部分函數隻要輸入的參數滿足一定條件,也能保證運行成功。比如time.Date函數,該函數將年月日等參數構造成time.Time對象,除非最後一個參數(時區)是nil。這種情況下會引發panic異常。panic是來自被調函數的信號,表示發生了某個已知的bug。一個良好的程序永遠不應該發生panic異常。
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
但是函數值之間是不可比較的,也不能用函數值作爲map的key。
|
||||
|
||||
函數值使得我們不僅僅可以通過數據來參數化函數,亦可通過行爲。標準庫中包含許多這樣的例子。下面的代碼展示了如何使用這個技巧。string.Map對字符串中的每個字符調用add1函數,併將每個add1函數的返迴值組成一個新的字符串返迴給調用者。
|
||||
函數值使得我們不僅僅可以通過數據來參數化函數,亦可通過行爲。標準庫中包含許多這樣的例子。下面的代碼展示了如何使用這個技巧。strings.Map對字符串中的每個字符調用add1函數,併將每個add1函數的返迴值組成一個新的字符串返迴給調用者。
|
||||
|
||||
```Go
|
||||
func add1(r rune) rune { return r + 1 }
|
||||
|
||||
Reference in New Issue
Block a user