重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
如下的例子,要打印100以內能被5整除的數,以panic的方式選擇出來并打印。
網站建設哪家好,找成都創新互聯!專注于網頁設計、網站建設、微信開發、小程序設計、集團企業網站建設等服務項目。為回饋新老客戶創新互聯還提供了北川羌族免費建站歡迎大家使用!
如果用下面的方式,執行到第一個panic就會跳出for循環
只能輸出第一個匹配項,然后退出for循環。
那么如何保證在for循環處理完panic不退出循環,直到打印完所有滿足條件的數值?
golang的panic被恢復后,能繼續執行比recover更早的defer,或者返回到recover函數的調用方,然后繼續執行下去。
所以,我們可以把panic和recover放到單獨的函數中,然后在for循環里調用這個函數,這個函數panic并恢復后,能返回到調用方for循環并繼續循環下去。
執行結果是所有0到100的所有符合panic條件的都能正確處理,for循環沒有異常退出:
golang的panic屬于非常嚴重的錯誤,一旦panic沒有recover的話,程序就退出了。一般避免主動panic,影響程序穩定性。
recover函數要放在defer里面,并且只能恢復同一個goroutine的并且是直接調用鏈函數發生的panic。recover不能恢復上一層函數的panic。
1、數組是多個 相同類型 的數據的組合,一個數組一旦聲明/定義了,其 長度是固定的,不能動態變化 。
2、var arr []int? ? 這時arr就是一個slice 切片 。
3、數組中的元素可以是任何數據類型,包括值類型和引用類型,但是 不能混用 。
4、數組創建后,如果沒有賦值,有默認值如下:
? ? 數值類型數組:????默認值為 0
? ? 字符串數組:? ? ? ?默認值為 ""
? ? bool數組:? ? ? ? ? ?默認值為 false
5、使用數組的步驟:
? ? (1)聲明數組并開辟空間
? ? (3)給數組各個元素賦值
? ? (3)使用數組
6、數組的下標是從0開始的。
7、數組下標必須在指定范圍內使用,否則報panic:數組越界,比如var arr [5]int的有效下標為0~4.
8、Go的數組屬于 值類型 ,在默認情況下是 值傳遞 ,因此會進行值拷貝。 數組間不會相互影響。
9、如想在其他函數中去修改原來的數組,可以使用 引用傳遞 (指針方式)。
10、長度是數組類型的一部分,在傳遞函數參數時,需要考慮數組的長度,看以下案例:
題1:編譯錯誤,因為不能把[3]int類型傳遞給[]int類型,前者是數組,后者是切片;
題2:編譯錯誤,因為不能把[3]int類型傳遞給[4]int類型;
題3:編譯正確,因為[3]int類型傳給[3]int類型合法。
我測試了一下
{0}可以得到fieldVals: zhangsan
{1}可以得到fieldVals: 33
但不能是{0, 1}