亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

解鎖即可觀看《Go開發工程師》完整課程視頻

Go開發工程師

未來3-5年企業高性能項目不可替代的語言,從基礎到項目實戰再到重構,真正從入門到精通

【第1周】Go基礎知識入門
【第2周】容器,go編程思想
【第3周】Go并發編程和工程管理
【第4周】從0開始理解rpc和grpc
【第5周】grpc和protobuf進階
【第6周】 yapi文檔管理、gorm詳解
【第7周】gin快速入門
【第8周】用戶服務的grpc服務
【第9周】用戶服務的web服務
【第10周】服務注冊/發現、配置中心、負載均衡
【第11周】商品微服務的grpc服務
【第12周】 商品微服務的gin層和oss圖片服務
【第13周】庫存服務和分布式鎖
【第14周】訂單和購物車微服務
【第15周】 支付寶支付、用戶操作微服務、前后端聯調
【第16周】elasticsearch實現搜索微服務
【第17周】 分布式理論基礎、分布式事務解決方案
【第18周】 學習rocketmq實現冪等性機制等
【第19周】鏈路追蹤、限流、熔斷、降級
【第20周】api網關、部署
【第21周】開發規范和go基礎擴展
【第22周】設計模式和單元測試
【第23周】protoc插件開發、cobra命令行
【第24周】log日志包設計
【第25周】ast代碼生成工具開發
【第26周】三層代碼結構
【第27周】grpc服務封裝更方便的rpc服務
【第28周】深入grpc的服務注冊、負載均衡原理
【第29周】基于gin封裝api服務
【第30周】可觀測的終極解決方案
【第31周】系統監控核心
【第32周】用戶、商品服務重構
【第33周】訂單、庫存等服務重構
【第33+周】訂單服務重構、wire進行ioc控制
【第34周】通過k8s部署服務
【第34+周】devops和k8s
章節
問答
課簽
筆記
評論
占位
占位

Go語言-for語句

    for語句代表著循環。一條語句通常由關鍵字for、初始化子句、條件表達式、后置子句和以花括號包裹的代碼塊組成。其中,初始化子句、條件表達式和后置子句之間需用分號分隔。示例如下:

for i := 0; i < 10; i++ {
    fmt.Print(i, " ")
}  

    我們可以省略掉初始化子句、條件表達式、后置子句中的任何一個或多個,不過起到分隔作用的分號一般需要被保留下來,除非在僅有條件表達式或三者全被省略時分號才可以被一同省略。
  
    我們可以把上述的初始化子句、條件表達式、后置子句合稱為for子句。實際上,for語句還有另外一種編寫方式,那就是用range子句替換掉for子句。range子句包含一個或兩個迭代變量(用于與迭代出的值綁定)、特殊標記:==、關鍵字range以及range表達式。其中,range表達式的結果值的類型應該是能夠被迭代的,包括:字符串類型、數組類型、數組的指針類型、切片類型、字典類型和通道類型。例如:

for i, v := range "Go語言" {
    fmt.Printf("%d: %c\n", i, v)
} 

    對于字符串類型的被迭代值來說,for語句每次會迭代出兩個值。第一個值代表第二個值在字符串中的索引,而第二個值則代表該字符串中的某一個字符。迭代是以索引遞增的順序進行的。例如,上面的for語句被執行后會在標準輸出上打印出:

0: G
1: o
2: 語
5: 言   

    可以看到,這里迭代出的索引值并不是連續的。下面我們簡單剖析一下此表象的本質。我們知道,字符串的底層是以字節數組的形式存儲的。而在Go語言中,字符串到字節數組的轉換是通過對其中的每個字符進行UTF-8編碼來完成的。字符串"Go語言"中的每一個字符與相應的字節數組之間的對應關系如下:

    注意,一個中文字符在經過UTF-8編碼之后會表現為三個字節。所以,我們用語[0]、語[1]和、語[2]分別表示字符'語'經編碼后的第一、二、三個字節。對于字符'言',我們如法炮制。

  
    對照這張表格,我們就能夠解釋上面那條for語句打印出的內容了,即:每次迭代出的第一個值所代表的是第二個字符值經編碼后的第一個字節在該字符串經編碼后的字節數組中的索引值。請大家真正理解這句話的含義。
  
    對于數組值、數組的指針值和切片之來說,range子句每次也會迭代出兩個值。其中,第一個值會是第二個值在被迭代值中的索引,而第二個值則是被迭代值中的某一個元素。同樣的,迭代是以索引遞增的順序進行的。
  
    對于字典值來說,range子句每次仍然會迭代出兩個值。顯然,第一個值是字典中的某一個鍵,而第二個值則是該鍵對應的那個值。注意,對字典值上的迭代,Go語言是不保證其順序的。
  
    攜帶range子句的for語句還可以應用于一個通道值之上。其作用是不斷地從該通道值中接收數據,不過每次只會接收一個值。注意,如果通道值中沒有數據,那么for語句的執行會處于阻塞狀態。無論怎樣,這樣的循環會一直進行下去。直至該通道值被關閉,for語句的執行才會結束。
  
    最后,我們來說一下break語句和continue語句。它們都可以被放置在for語句的代碼塊中。前者被執行時會使其所屬的for語句的執行立即結束,而后者被執行時會使當次迭代被中止(當次迭代的后續語句會被忽略)而直接進入到下一次迭代。

任務

請把命令源碼文件index.go的第 9 行寫一條for語句,使該文件被執行時會在標準輸出上打印出:

1: Golang
2: Java
3: Python
4: C

 

?不會了怎么辦

該條for語句可以是:

for _, v := range []int{1, 2, 3, 4} {
    fmt.Printf("%d: %s\n", v, map1[v])
}
||

提問題

寫筆記

公開筆記
提交
||

請驗證,完成請求

由于請求次數過多,請先驗證,完成再次請求

加群二維碼

打開微信掃碼自動綁定

您還未綁定服務號

綁定后可得到

  • · 粉絲專屬優惠福利
  • · 大咖直播交流干貨
  • · 課程更新,問題答復提醒
  • · 賬號支付安全提醒

收藏課程后,能更快找到我哦~

使用 Ctrl+D 可將課程添加到書簽

邀請您關注公眾號
關注后,及時獲悉本課程動態

舉報

0/150
提交
取消
全部 精華 我要發布
全部 我要發布
最熱 最新
只看我的

手記推薦

更多

本次提問將花費2個積分

你的積分不足,無法發表

為什么扣積分?

本次提問將花費2個積分

繼續發表請點擊 "確定"

為什么扣積分?