go語言循環控制 go語言循環控制語句

Go語言在循環中panic后還能繼續執行for循環?

如下的例子,要打印100以內能被5整除的數,以panic的方式選擇出來并打印。

成都創新互聯2013年開創至今,是專業互聯網技術服務公司,擁有項目成都網站建設、網站建設網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元吳川做網站,已為上家服務,為吳川各地企業和個人服務,聯系電話:028-86922220

如果用下面的方式,執行到第一個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。

Golang入門到項目實戰 | golang for循環語句

go語言中的for循環,只有for關鍵字,去除了像其他語言中的while和do while.

注意:for表達式不用加括號

循環輸出1到10

運行結果

初始條件,可以寫到外面

運行結果

初始條件和結束條件都可以省略

運行結果

這種情況類似其他語言中的while循環

永真循環

運行結果

for循環可以通過break、goto、return、panic語句強制退出循環。

go語言循環隊列的實現

隊列的概念在 順序隊列 中,而使用循環隊列的目的主要是規避假溢出造成的空間浪費,在使用循環隊列處理假溢出時,主要有三種解決方案

本文提供后兩種解決方案。

順序隊和循環隊列是一種特殊的線性表,與順序棧類似,都是使用一組地址連續的存儲單元依次存放自隊頭到隊尾的數據元素,同時附設隊頭(front)和隊尾(rear)兩個指針,但我們要明白一點,這個指針并不是指針變量,而是用來表示數組當中元素下標的位置。

本文使用切片來完成的循環隊列,由于一開始使用三個參數的make關鍵字創建切片,在輸出的結果中不包含nil值(看起來很舒服),而且在驗證的過程中發現使用append()函數時切片內置的cap會發生變化,在消除了種種障礙后得到了一個四不像的循環隊列,即設置的指針是順序隊列的指針,但實際上進行的操作是順序隊列的操作。最后是對make()函數和append()函數的一些使用體驗和小結,隊列的應用放在鏈隊好了。

官方描述(片段)

即切片是一個抽象層,底層是對數組的引用。

當我們使用

構建出來的切片的每個位置的值都被賦為interface類型的初始值nil,但是nil值也是有大小的。

而使用

來進行初始化時,雖然生成的切片中不包含nil值,但是無法通過設置的指針變量來完成入隊和出隊的操作,只能使用append()函數來進行操作

在go語言中,切片是一片連續的內存空間加上長度與容量的標識,比數組更為常用。使用 append 關鍵字向切片中追加元素也是常見的切片操作

正是基于此,在使用go語言完成循環隊列時,首先想到的就是使用make(type, len, cap)關鍵字方式完成切片初始化,然后使用append()函數來操作該切片,但這一方式出現了很多問題。在使用append()函數時,切片的cap可能會發生變化,用不好就會發生擴容或收縮。最終造成的結果是一個四不像的結果,入隊和出隊操作變得與指針變量無關,失去了作為循環隊列的意義,用在順序隊列還算合適。

參考博客:

Go語言中的Nil

Golang之nil

Go 語言設計與實現

網頁名稱:go語言循環控制 go語言循環控制語句
文章路徑:http://m.kartarina.com/article40/hgghho.html

成都網站建設公司_創新互聯,為您提供品牌網站建設面包屑導航定制開發ChatGPT網站策劃自適應網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都做網站
主站蜘蛛池模板: 成人免费无码大片a毛片软件| 少妇人妻无码专区视频| 一本大道无码av天堂| 无码不卡av东京热毛片| 国产成人无码A区在线观看导航| 中文字幕精品无码一区二区| 久久久久久精品无码人妻| 本道天堂成在人线av无码免费| 亚洲欧洲自拍拍偷午夜色无码| 亚洲av无码偷拍在线观看| 中文字幕乱码无码人妻系列蜜桃| 亚洲精品无码av中文字幕| 久久久久久AV无码免费网站下载| 无码国模国产在线无码精品国产自在久国产 | 久久亚洲AV成人无码国产电影| 亚洲免费日韩无码系列| 精品视频无码一区二区三区| 久久人妻少妇嫩草AV无码蜜桃| 日韩成人无码一区二区三区| 国产成人精品无码播放| 国产精品白浆在线观看无码专区| 无码欧精品亚洲日韩一区| 亚洲av无码乱码在线观看野外 | 亚洲中文字幕无码一去台湾| 国产高清无码二区 | 亚洲国产综合无码一区 | 亚洲中文字幕伊人久久无码| 亚洲αⅴ无码乱码在线观看性色| 亚洲综合无码精品一区二区三区 | 精品国产一区二区三区无码| 一本色道无码道在线观看| 午夜无码视频一区二区三区| 无码国产激情在线观看| 无码专区人妻系列日韩精品少妇 | 亚洲av无码电影网| 少妇无码一区二区二三区| 中文字幕丰满乱子伦无码专区| 中文字幕无码久久人妻| 人妻无码中文字幕免费视频蜜桃| 国产精品亚洲一区二区无码| MM1313亚洲精品无码久久|