Golang實(shí)現(xiàn)for循環(huán)運(yùn)行超時(shí)后自動(dòng)退出的方法
前言
for循環(huán)是用來(lái)遍歷數(shù)組或數(shù)字的。用for循環(huán)遍歷字符串時(shí),也有 byte 和 rune 兩種方式.第一種為byte,第二種rune.下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。
Golang實(shí)現(xiàn)for循環(huán)
package main
import "fmt"
func main() {
sum := 0
for i := 0; i < 10; i++ {
sum += i
}
fmt.Println(sum)
}
跟C語(yǔ)言中一樣,可以讓前置、后置語(yǔ)句為空。
package main
import "fmt"
func main() {
sum := 1
for ; sum < 1000; {
sum += sum
}
fmt.Println(sum)
}
基于此可以省略分號(hào):
package main
import "fmt"
func main() {
sum := 1
for sum < 1000 {
sum += sum
}
fmt.Println(sum)
}
如果省略了循環(huán)條件,它就是個(gè)死循環(huán)源。
package main
func main() {
for ; ; {
}
}
而為了避免累贅,分號(hào)可以省略,因此一個(gè)死循環(huán)可以簡(jiǎn)潔地表達(dá)。
package main
func main() {
for {
}
}
for 循環(huán)超時(shí)自動(dòng)退出
如何控制 for 循環(huán)一段時(shí)間超時(shí)自動(dòng)退出呢?思路很簡(jiǎn)單,就是在 for 循環(huán)中使用 select 監(jiān)聽(tīng) channel,代碼如下:
package main
import (
"fmt"
"time"
)
func main() {
timeout := time.After(time.Second * 10)
finish := make(chan bool)
count := 1
go func() {
for {
select {
case <-timeout:
fmt.Println("timeout")
finish <- true
return
default:
fmt.Printf("haha %d\n", count)
count++
}
time.Sleep(time.Second * 1)
}
}()
<-finish
fmt.Println("Finish")
}
這里設(shè)置 for 循環(huán) 10s 超時(shí)。
運(yùn)行內(nèi)容:
haha 1 haha 2 haha 3 haha 4 haha 5 haha 6 haha 7 haha 8 haha 9 haha 10 timeout Finish
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
VsCode搭建Go語(yǔ)言開(kāi)發(fā)環(huán)境的配置教程
這篇文章主要介紹了在VsCode中搭建Go開(kāi)發(fā)環(huán)境的配置教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05
go語(yǔ)言中的udp協(xié)議及TCP通訊實(shí)現(xiàn)示例
這篇文章主要為大家介紹了go語(yǔ)言中的udp協(xié)議及TCP通訊的實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04
簡(jiǎn)單聊聊Go語(yǔ)言中空結(jié)構(gòu)體和空字符串的特殊之處
在日常的編程過(guò)程中,大家應(yīng)該經(jīng)常能遇到各種”空“吧,比如空指針、空結(jié)構(gòu)體、空字符串等,本文就以?Go?語(yǔ)言為例,一起來(lái)看看空結(jié)構(gòu)體和空字符串在?Go?語(yǔ)言中的特殊之處吧2024-03-03
golang如何實(shí)現(xiàn)抓取IP地址的蜘蛛程序詳解
這篇文章主要給大家介紹了關(guān)于利用golang如何實(shí)現(xiàn)抓取IP地址的蜘蛛程序的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07
詳細(xì)介紹Go語(yǔ)言之?dāng)?shù)組與切片
這篇文章介紹Go語(yǔ)言之?dāng)?shù)組與切片,數(shù)組是具有相同唯一類(lèi)型的一組已編號(hào)且長(zhǎng)度固定的數(shù)據(jù)項(xiàng)序列,這種類(lèi)型可是任意的原始類(lèi)型如整形、字符串或自定義類(lèi)型。切片是數(shù)組的一個(gè)引用,因此切片是引用類(lèi)型,在進(jìn)行傳遞時(shí),遵守引用傳遞的機(jī)制,下面我們就來(lái)詳細(xì)了解一下該內(nèi)容2021-10-10
初學(xué)Go必備的vscode插件及最常用快捷鍵和代碼自動(dòng)補(bǔ)全
這篇文章主要給大家介紹了關(guān)于初學(xué)vscode寫(xiě)Go必備的vscode插件及最常用快捷鍵和代碼自動(dòng)補(bǔ)全的相關(guān)資料,由于vscode是開(kāi)源免費(fèi)的,而且開(kāi)發(fā)支持vscode的插件相對(duì)比較容易,更新速度也很快,需要的朋友可以參考下2023-07-07

