網站首頁 編程語言 正文
1.條件語句
幾個注意點和C#不一樣的。
if a < 5 { return 0 } else { return 1 }
① 條件語句不需要使用括號將條件包含起來 a<5 ,C#必須有()
②無論語句體內有幾條語句,花括號{}都是必須存在的;C#如果只有一條語句可以省略{}
③左花括號{必須與if或者else處于同一行 C#的{}是換行的
④在有返回值的函數中,不允許將“最終的”return語句包含在if...else...結構中,
否則會編譯失?。ㄟ@句話錯誤的 1.1版Go語言和之后的新版已經支持if else條件語句直接return返回值。),所以上面的demo是可以編譯通過的。
2.選擇語句
①條件表達式不限制為常量或者整數
②單個case中,可以出現多個結果選項
③Go語言不需要用break來明確退出一個case;C#需要在每一個case結束之后加上break
④增加了fallthrough方法 主要用于多個相同case合并,Go就相當于默認加了break;
和C#正好相反
switch i { case 0: fmt.Printf("0") case 1: fmt.Printf("1") case 2: fallthrough case 3: fmt.Printf("3") case 4, 5, 6: fmt.Printf("4, 5, 6") default: fmt.Printf("Default") }
如上例子,case 2中有語句fallthrough,那么當i=2時候,執行完fallthrough會執行case3,由此打印出了“3”
⑤可以不設定switch之后的條件表達式,在此種情況下,整個switch結構與多個if...else... 的邏輯作用等同。如下代碼
switch { case 0 <= Num && Num <= 3: fmt.Printf("0-3") case 4 <= Num && Num <= 6: fmt.Printf("4-6") case 7 <= Num && Num <= 9: fmt.Printf("7-9") }
3.循環語句
Go語言中的循環語句只支持for關鍵字,而不支持while和do-while結構。
①for后面的條件表達式不需要用圓括號()包含起來
模擬while語句:直接用for后面不加條件
sum := 0 for { sum++ if sum > 100 { break } }
②for循環中條件表達式中也支持多重賦值
a := []int{1, 2, 3, 4, 5, 6} for i, j := 0, len(a) – 1; i < j; i, j = i + 1, j – 1 { a[i], a[j] = a[j], a[i] }
如上代碼:
a) 初始值 i=0 ,j= len(a) – 1
b)循環的條件是 i < j
c)每執行一次 i+1 ,j-1
循環體: a[i], a[j] = a[j], a[i]
Go語言中的for循環與C語言一樣,都允許在循環條件中定義和初始化變量,唯一的區別是,Go語言不支持以逗號為間隔的多個賦值語句,必須使用平行賦值的方式來初始化多個變量。
③Go語言的for循環同樣支持continue和break來控制循環,但是它提供了一個更高級的break,可以選擇中斷哪一個循環, 如下代碼:
break語句終止的是JLoop標簽處的外層循環
for j := 0; j < 5; j++ { for i := 0; i < 10; i++ { if i > 5 { break JLoop } fmt.Println(i) } } JLoop: //Do Something
如果是C#,只能跳出第一層循環,而不能直接跳出第二層循環,這也是區別的地方之一
4.跳轉語句
Go語言支持goto語句
func myfunc() { i := 0 HERE: fmt.Println(i) i++ if i < 10 { goto HERE } }
for…range 是什么,就相當于原來的foreach中迭代 k,v結構。
for index, value := range mySlice { fmt.Println("index: " + index) fmt.Println("value: " + value) }
當迭代切片時,關鍵字range 會返回兩個值。第一個值是當前迭代到的索引位置,第二個
值是該位置對應元素值的一份副本
這張圖比較好的說明了range的返回值,重點在于值是副本
原文鏈接:https://www.cnblogs.com/dcz2015/p/10096157.html
相關推薦
- 2022-06-27 ASP.net?core使用Autofac實現泛型依賴注入_實用技巧
- 2022-01-27 插入數據庫某個字段之前判斷是否重復
- 2022-04-03 C#中的char與string詳解_C#教程
- 2023-03-03 C語言malloc與calloc區別詳解_C 語言
- 2022-12-26 C語言實現十六進制轉換為十進制的方法詳解_C 語言
- 2022-09-08 Python如何將list中的string轉換為int_python
- 2022-04-20 C++的多態和虛函數你真的了解嗎_C 語言
- 2023-02-17 Golang實踐指南之獲取目錄文件列表_Golang
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支