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 呼叫之間。唯一可以確定的是...