diff --git a/ch1/ch1-02.md b/ch1/ch1-02.md index 362929e..6d1d9c6 100644 --- a/ch1/ch1-02.md +++ b/ch1/ch1-02.md @@ -147,7 +147,7 @@ func main() { fmt.Println(os.Args[1:]) ``` -這個輸出結果和前面的string.Join得到的結果很相似,隻是被自動地放到了一個方括號里,對slice調用Println函數都會被打印成這樣形式的結果。 +這個輸出結果和前面的strings.Join得到的結果很相似,隻是被自動地放到了一個方括號里,對slice調用Println函數都會被打印成這樣形式的結果。 **練習 1.1:** 脩改echo程序,使其能夠打印os.Args[0]。 diff --git a/ch1/ch1-03.md b/ch1/ch1-03.md index df633a0..14cda4e 100644 --- a/ch1/ch1-03.md +++ b/ch1/ch1-03.md @@ -167,7 +167,7 @@ func main() { } ``` -ReadFile函數返迴一個byte的slice,這個slice必須被轉換爲string,之後才能夠用string.Split方法來進行處理。我們在3.5.4節中會更詳細地講解string和byte slice(字節數組)。 +ReadFile函數返迴一個byte的slice,這個slice必須被轉換爲string,之後才能夠用strings.Split方法來進行處理。我們在3.5.4節中會更詳細地講解string和byte slice(字節數組)。 在更底層一些的地方,bufio.Scanner,ioutil.ReadFile和ioutil.WriteFile使用的是*os.File的Read和Write方法,不過一般程序員併不需要去直接了解到其底層實現細節,在bufio和io/ioutil包中提供的方法已經足夠好用。 diff --git a/ch5/ch5-04.md b/ch5/ch5-04.md index 3b61b67..7d83d97 100644 --- a/ch5/ch5-04.md +++ b/ch5/ch5-04.md @@ -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異常。 diff --git a/ch5/ch5-05.md b/ch5/ch5-05.md index a517eae..1cf680f 100644 --- a/ch5/ch5-05.md +++ b/ch5/ch5-05.md @@ -35,7 +35,7 @@ 但是函數值之間是不可比較的,也不能用函數值作爲map的key。 -函數值使得我們不僅僅可以通過數據來參數化函數,亦可通過行爲。標準庫中包含許多這樣的例子。下面的代碼展示了如何使用這個技巧。string.Map對字符串中的每個字符調用add1函數,併將每個add1函數的返迴值組成一個新的字符串返迴給調用者。 +函數值使得我們不僅僅可以通過數據來參數化函數,亦可通過行爲。標準庫中包含許多這樣的例子。下面的代碼展示了如何使用這個技巧。strings.Map對字符串中的每個字符調用add1函數,併將每個add1函數的返迴值組成一個新的字符串返迴給調用者。 ```Go func add1(r rune) rune { return r + 1 }