91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go流程控制代碼怎么寫

發布時間:2023-04-20 17:13:28 來源:億速云 閱讀:75 作者:iii 欄目:開發技術

這篇文章主要介紹“Go流程控制代碼怎么寫”,在日常操作中,相信很多人在Go流程控制代碼怎么寫問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Go流程控制代碼怎么寫”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

Go流程控制

1、條件語句IF

1、簡單格式(不支持三目運算符)
if 布爾表達式 {
  // 執行語句
}
2、if里面包含多個表達式的時候,使用‘;'隔開

2、條件語句switch

1、var1可以是任何類型,value1和value2可以是同類型的人和值
switch var1 {
  case value1:
  	xxx
  case value2:
  	xxx
  default:
  	yyy
}

1、Type Switch

switch還可以被用于type-switch來判斷某個interface變量中實際存儲的變量類型

switch x.(type) {
  case type:
  	statement(s)
  case type:
	  statement(s)
  default:
	  statement(s)
}

3、條件語句select

select語句類似switch語句,但select會隨機執行一個可運行的case,如果沒有case可運行,它將阻塞,直到有case可運行。

select {
	case communication clause :
  	statement(s)
  case communication clause :
  	statement(s)
  default:
  	statement(s)
}

// 解釋:每個case必須是一個通信,所有的channel表達式都會被求值,所有被發送的表達式都會被求值,
// 1、如果任意某個通信可以執行,就執行,其余忽略
// 2、如果有多個case可以執行,select隨機且公平的選出一個執行
// 3、否則:如果有default語句,執行;沒有default,select將阻塞,直到某個通信可以運行,Go不會重新對Channel或值進行求職

1、golang select的使用以及典型用法

1、基本使用:

用于處理異步IO操作,select會監聽case語句中的channel的讀寫操作,當case中channel讀寫操作為非阻塞狀態,將觸發相應的動作。(case語句必須是channel操作)

2、典型用法:

1)超時判斷

//比如在下面的場景中,使用全局resChan來接受response,如果時間超過3S,resChan中還沒有數據返回,則第二條case將執行
var resChan = make(chan int)
// do request
func test() {
    select {
    case data := <-resChan:
        doData(data)
    case <-time.After(time.Second * 3):
        fmt.Println("request time out")
    }
}

func doData(data int) {
    //...
}

2)退出

//主線程(協程)中如下:
var shouldQuit=make(chan struct{})
fun main(){
    {
        //loop
    }
    //...out of the loop
    select {
        case <-c.shouldQuit:
            cleanUp()
            return
        default:
        }
    //...
}

//再另外一個協程中,如果運行遇到非法操作或不可處理的錯誤,就向shouldQuit發送數據通知程序停止運行
close(shouldQuit)

3)判斷channel是否阻塞

//在某些情況下是存在不希望channel緩存滿了的需求的,可以用如下方法判斷
ch := make (chan int, 5)
//...
data:=0
select {
case ch <- data:
default:
    //做相應操作,比如丟棄data。視需求而定
}

4、循環語句for

for init; condition; post {}
for condition {}
for {}

// 解釋:1)init一般為賦值表達式,給控制變量賦初始值;2)condition:關系表達式或邏輯表達式,循環控制條件;3)post:一般為賦值表達式,給控制變量增量或減量
// 執行流程:判別賦值表達式init是否滿足condition給定的條件,若為真,則執行循環語句,然后執行post,進入第二輪循環

5、循環語句range

for key, value := range oldMap {
  newMap[key] = value
}

for 和 for range 有什么區別?

1、使用場景:

1)for可以遍歷array、slice、key為整形遞增的map、string

2)for range 可以完成for所有事情,卻能做for不能做的事情,包括遍歷key為string類型的map、遍歷channel

 6、循環控制goto、break、&hellip;

Goto、Break、Continue
1、三個語句都可以配合標簽(label)使用
2、標簽名區分大小寫,定義后若不是用會造成編譯錯誤
3、continue、break配合標簽(label)可以用于多層循環跳出
4、goto調整執行位置,與continue、break配合標簽(label)的結果并不相同

到此,關于“Go流程控制代碼怎么寫”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

go
AI

咸丰县| 积石山| 宜宾市| 南昌市| 红原县| 元谋县| 民县| 门头沟区| 卓尼县| 淮滨县| 乌兰县| 福州市| 抚宁县| 砀山县| 息烽县| 礼泉县| 忻州市| 大庆市| 营山县| 陇南市| 化隆| 磐安县| 江门市| 前郭尔| 康保县| 沧源| 乌苏市| 双牌县| 永新县| 长海县| 高清| 襄城县| 辽宁省| 剑河县| 桑植县| 静海县| 玉山县| 吉木乃县| 扶沟县| 固原市| 河曲县|