Go語言學(xué)習(xí)筆記?。”磉_(dá)式

Golang關(guān)鍵字

break case chan const continus default defer else fallthrough for func go goto
if import interface map package range return select struct switch type var

Goang運(yùn)算符

不支支持運(yùn)算符重載。尤其需要注意,"++"、"--" 是語句而而非非表達(dá)式。

+  &  +=  &=  &&  ==  !=  (  )
-  |  -=  |=  ||  <  <=  [  ]
*  ^  *=  ^=  <-  >  >=  {  }
/  <<  /=  <<=  ++  =  :=  ,  ;
%  >>  %=  >>=  --  !  ...  .  :
&^  &^=

控制流

x := 0
if n := "abc"; x > 0 {// 初始化語句未必就是定義變量,比如 println("init") 也是可以的。
    println(n[2])
} else if x < 0 {// 注意 else if 和 else 左大大括號位置。
    println(n[1])
} else {
    println(n[0])
} 

循環(huán)

支支持三種循環(huán)方方式,包括類 while 語法。

s := "abc"
for i, n := 0, len(s); i < n; i++ {// 常見的 for 循環(huán),支持初始化語句。
    println(s[i])
}
n := len(s)
for n > 0 {// 替代 while (n > 0) {}
    println(s[n])// 替代 for (; n > 0;) {}
    n--
}
for {// 替代 while (true) {}
    println(s)// 替代 for (;;) {}
}

Rang

類似迭代器操作,返回 (索引, 值) 或 (鍵, 值)。

            1st  value      2nd  value
------------------+-------------------+------------------+-------------------
string          index          s[index]    unicode,    rune
array/slice       index          s[index]
map            key           m[key]
channel         element

可忽略不想要的返回值,或用 "_" 這個特殊變量。

s := "abc"
for i := range s {// 忽略 2nd value,支支持 string/array/slice/map。
    println(s[i])
}
for _, c := range s {// 忽略 index。
    println(c)
}
for range s {// 忽略全部返回值,僅迭代。
    ...
}
m := map[string]int{"a": 1, "b": 2}
for k, v := range m {// 返回 (key, value)。
    println(k, v)
}

Switch

分支表達(dá)式可以是任意類型,不限于常量。可省略 break,默認(rèn)自動終止。

x := []int{1, 2, 3}
i := 2
switch i {
  case x[1]:
    println("a")
  case 1, 3:
    println("b")
  default:
    println("c")
}

如需要繼續(xù)下一分支,可使用 fallthrough,但不再判斷條件。省略條件表達(dá)式,可當(dāng) if...else if...else 使用。

Goto,Break,Continue

支持在函數(shù)內(nèi) goto 跳轉(zhuǎn)。標(biāo)簽名區(qū)分大小寫,未使用標(biāo)簽引發(fā)錯誤。配合標(biāo)簽,break 和 continue 可在多級嵌套循環(huán)中跳出。

func main() {
L1:
  for x := 0; x < 3; x++ {
  L2:
    for y := 0; y < 5; y++ {
      if y > 2 { continue L2 }
      if x > 1 { break L1 }
        print(x, ":", y, " ")
    }
    println()
  }
}

附:break 可用于 for、switch、select,而 continue 僅能用于 for 循環(huán)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 86.復(fù)合 Cases 共享相同代碼塊的多個switch 分支 分支可以合并, 寫在分支后用逗號分開。如果任何模式...
    無灃閱讀 1,557評論 1 5
  • 有什么東西,在心里,應(yīng)時常記起,卻沒記起。在活著,跳動著,卻會偶爾失去記憶。 還以為,已經(jīng)忘記,其實發(fā)現(xiàn),它在那里...
    天然愛蘇三閱讀 289評論 0 2
  • 2018考研雖還沒正式開,但是考研大戰(zhàn)已經(jīng)悄悄拉開了帷幕。目前有些同學(xué)已經(jīng)開始準(zhǔn)備復(fù)習(xí)了,但是困擾著這些同學(xué)們的第...
    檸就是萌閱讀 415評論 0 2
  • 你要感謝生命的每次不期而遇 相遇便是緣分 何況溫柔對你 珍惜
    無恙大俠閱讀 143評論 0 0
  • 這是一部可以誘惑人在跑步機(jī)上待一小時的電影。 顏值高。最帥當(dāng)屬任達(dá)華,風(fēng)度沉穩(wěn);最美的是李心潔,五官立體眼睛深邃;...
    綠玉閱讀 721評論 0 1

友情鏈接更多精彩內(nèi)容