Go 語言基礎
Go 語言內建的運算子有:
1.算術運算子:+ - * / % ++ --
2.關係運算符:== != > < >= <=
3.邏輯運算子:&& || !
4.位運算子:& | ^ << >> 將其先轉換為二進位制數,在根據如下表規則
pqp & qp | qp ^ q 00000 01011 11110 10011
如假定 A = 60; B = 13; 其二進位制數轉換為:
A = 0011 1100 B = 0000 1101 ----------------- A&B = 0000 1100 A|B = 0011 1101 A^B = 0011 0001 A<<2 =240 二進位制為 1111 0000 左移n位就是乘以2的n次方。 A>>2 =15二進位制為 0000 1111 右移n位就是除以2的n次方。
5.賦值運算子
1.=2.+=3.-=4.*=5./=6.%= 7.<<=左移後賦值C <<= 2 等於 C = C << 2 8.>>=右移後賦值C >>= 2 等於 C = C >> 2 9.&=按位與後賦值C &= 2 等於 C = C & 2 10.^=按位異或後賦值C ^= 2 等於 C = C ^ 2 11.|=按位或後賦值C |= 2 等於 C = C | 2
6.其他運算子
&返回變數儲存地址例項&a:將給出變數的實際地址。 *指標變數。例項*a:是一個指標變數
7.運算子優先順序
有些運算子擁有較高的優先順序,二元運算子的運算方向均是從左至右。下表列出了所有運算子以及它們的優先順序,由上至下代表優先順序由高到低:
優先順序運算子 7^ ! 6* / % << >> & &^ 5+ - | ^ 4== != < <= >= > 3<- 2&& 1||
當然,你可以通過使用括號來臨時提升某個表示式的整體運算優先順序。
Go 語言條件語句
if
if...else
if 巢狀語句你可以在 if 或 else if 語句中嵌入一個或多個 if 或 else if 語句。
switch 語句switch 語句用於基於不同條件執行不同動作。
select 語句select 語句類似於 switch 語句,但是select會隨機執行一個可執行的case。如果沒有case可執行,它將阻塞,直到有case可執行。
Go 語言迴圈語句
for 迴圈重複執行語句塊
迴圈巢狀在 for 迴圈中巢狀一個或多個 for 迴圈
迴圈控制語句
break 語句經常用於中斷當前 for 迴圈或跳出 switch 語句
continue 語句跳過當前迴圈的剩餘語句,然後繼續進行下一輪迴圈。
goto 語句將控制轉移到被標記的語句。
迴圈判斷的例子輸出 1-100 素數:
package main import "fmt" func main() { var a, b int for a = 2; a <= 100; a++ { for b = 2; b <= (a / b); b++ { if a%b == 0 { break } } if b > (a / b) { fmt.Printf("%d\t是素數\n", a) } } }
Go 語言函式
Go 語言函式定義格式如下:
func function_name( [parameter list 參賽列表] ) [return_types 返回型別] { 函式體 }
函式引數
函式如果使用引數,該變數可稱為函式的形參。
形參就像定義在函式體內的區域性變數。
呼叫函式,可以通過兩種方式來傳遞引數:
傳遞型別描述
值傳遞:值傳遞是指在呼叫函式時將實際引數複製一份傳遞到函式中,這樣在函式中如果對引數進行修改,將不會影響到實際引數。
引用傳遞:引用傳遞是指在呼叫函式時將實際引數的地址傳遞到函式中,那麼在函式中對引數所進行的修改,將影響到實際引數。
預設情況下,Go 語言使用的是值傳遞,即在呼叫過程中不會影響到實際引數。
函式用法
函式作為值函式定義後可作為值來使用
閉包閉包是匿名函式,可在動態程式設計中使用
方法方法就是一個包含了接受者的函式
Go 語言變數作用域
Go 語言中變數可以在三個地方宣告:
函式內定義的變數稱為區域性變數
函式外定義的變數稱為全域性變數
函式定義中的變數稱為形式引數
package main import "fmt" /* 宣告全域性變數 */ var a int = 20 func main() { /* main 函式中宣告區域性變數 */ var a int = 10 var b int = 20 var c int = 0 fmt.Printf("main()函式中 a = %d\n", a) c = sum(a, b) fmt.Printf("main()函式中 a = %d\n", a) fmt.Printf("main()函式中 c = %d\n", c) } /* 函式定義-兩數相加 */ func sum(a, b int) int { a = a + 1 fmt.Printf("sum() 函式中 a = %d\n", a) fmt.Printf("sum() 函式中 b = %d\n", b) return a + b } /*main()函式中 a = 10 sum() 函式中 a = 11 sum() 函式中 b = 20 main()函式中 a = 10 main()函式中 c = 31*/
Go 語言陣列
初始化陣列
以下演示了陣列初始化:
var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
初始化陣列中 {} 中的元素個數不能大於 [] 中的數字。