Go語言 表示式

2021-07-24 18:25:59 字數 3352 閱讀 3512

go語言僅有25個保留的關鍵字,下面我們就列舉下這25個關鍵字

break

default

func

inte***ce

select

case

defer

gomap

struct

chan

else

goto

package

switch

const

fallthrough

ifrange

type

continue

forimport

return

vargo語言精簡了控制語句,不在提供while迴圈與do…while()迴圈均由for迴圈代替。

package main

import(

"fmt"

)func main()else

if x <5 && x >0else

}

輸出: 3

注:以上新增注釋的關鍵點大括號的位置,go語言中省略了判斷表示式中的」()」但是並不能省略「{}」這一點是需要注意的。比較特別的是對初始化語句的支援,可定義塊區域性變數或執行初始化函式

func main()

if i,j := x+1,x+2;i < jelse

}

使用if…else的一些注意事項

1. 盡可能的減少**塊巢狀

2. 對於某些過於複雜的組合條件,建議將其重構為函式

與if類似,switch語句也用於選擇執行

package main

import(

"fmt"

)func main()

}

輸出:a | b

switch語句同樣支援初始化語句,按順序匹配只有全部匹配失敗時才會執行default塊。

package main

import(

"fmt"

)func main()

}

寫到這好多的c++程式設計師都會想到為什麼沒有break,因為在go語言中無需顯示執行break,case執行完畢後自動中斷,如需執行後面的case語句需要執行fallthrough,但不在匹配後續條件表示式。

package main

import(

"fmt"

)func main()

}

輸出:

15 35

注: 1. 相鄰的空case不構成多條件匹配

2. 不能出現重複的case常量值

3. fallthrough必須放在case塊結尾,可使用break語句阻止

在go語言中僅有for一種迴圈語句。

for

i := 0;i

< 10;i++

fori

< 10

i++}

forbreak

}

初始化語句僅被執行一次。條件表示式中如有函式呼叫,須確認是否會被重複執行。

package main

import(

"fmt"

)func count()int

func main()

c :=0

for c < count()

}

輸出:

count.a 0

a 1

a 2

count.b 0

count.b 1

count.b 2

規避的方法就是在初始化表示式中定義區域性變數儲存count結果

for…range語句

可用for…range語句完成資料迭代,支援字串、陣列、切片、字典、通道型別,返回索引、鍵值資料。

data type

1st value

2nd value

string

index

s[index]

array/slice

index

v[index]

mapkey

value

channel

element

package main

import(

"fmt"

)func main()

for i,s := range data

}

輸出:

0 a

1 b

2 c

當然如果不需要索引我們可以使用「_」將其忽略掉

package main

import(

"fmt"

)func main()

for i := range data

for _,s := range data

}

輸出:

0 a

1 b

2 c

a b

c 無論普通的for迴圈還是range迭代,其定義的區域性變數都會重複使用。

注意:range會複製目標資料。受直接影響的是陣列,可改用指標或切片型別。

package main

import(

"fmt"

)func main()

for i,x := range data

fmt.printf("x: %d,data: %d\n",x,data[i])

}for i,x := range data[:]

fmt.printf("x: %d,data: %d\n",x,data[i])

}}

輸出:

x: 10,data: 110

x: 20,data: 220 //range返回的依舊是複製值

x: 30,data: 330

x: 110,data: 210 //當i==0時修改data時,x已經取值所以是110

x: 420,data: 420 //複製的僅是slice自身,底層array仍是院物件

x: 630,data: 630

goto:被討伐的比較多,在寫c++程式的時候就被告知能不用就不要用goto語句(其實就是告訴你不要用),但是go語言中保留了goto關鍵字,與在c++中使用的方法相同在使用時需要先定義標籤,標籤區分大小寫。

break:用於switch、for、select語句,終止整個語句塊執行

continue:僅用於for迴圈,終止當前迴圈進行下一次迴圈

C語言表示式

逗號表示式逗號表示式 就是用逗號隔開的多個表示式,從左向右依次執行 exp1,exp2,wxp3,wxpn注意 整個表示式的結果是最後乙個表示式的結果。void test 下表引用 函式呼叫和結構成員 1.下表引用符操作符 運算元 乙個陣列名 以後索引值 int arr 10 arr 9 10 有兩...

c語言 表示式的計算

include stack.h 提供棧及其基本操作函式 include mymath.h 提供階乘函式 include include define buffsize 128 define charsize 10 define pi 3.141593 define e 2.718282 define...

C語言 表示式計算次序

c語言裡,優先順序和結合性規則告訴我們哪些符號組成乙個意群,同時這些意群內部如何進行計算的次序始終未定義。在表示式 x f g h g 和 h 組成乙個意群進行乘法運算,單兩者的呼叫可能以任何順序次序出現。同理f 呼叫,可能在乘法之前,也可能在乘法之後,也可能在g 和 h 呼叫之間。唯一可以確定的是...