這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
包(packages)
每個GO程式都有一個個包組成,程式由main包開始運行。
package mainfunc main(){ //do something}
匯入(import)
go語言通過import關鍵字,將所需要使用的包引入到程式中,可以:
import( "fmt" "math/rand")
或者
import "fmt"import "math/rand"
函數(Functions)
一個函數可以有0個或多個參數。參數的類型在變數的後面聲明,用空格隔開,函數的傳回型別在括弧後面聲明,如果有多個傳回值,則用括弧括起,用逗號分割,例如
func foo(a,b int) int{if a>b{return a}return b}
這個函數定義是這樣的,函數名為foo,傳回值為int 型,參數為a,b均是intint型 func是關鍵字,聲明這是一個函數參數類型的連續性:如果一個參數沒有宣告類型,那麼這個參數的類型與下一個參數的類型
相同多傳回值:go語言可以定義多個傳回值,以儘可能的減少資料結構例如
func swap(x, y string) (string, string) { return y, x}
從來沒有如此簡單的實現一個值交換
預定義傳回值變數,這樣寫出來的函數是如此優美並簡單
func split(sum int) (x, y int) { x = sum * 4 / 9 y = sum - x return}
變數(variables)
一個變數聲明可以包含初始化,如有一個變數在聲明中存在初始化式,那麼變數的類型可以省略,變數將使用初始化式的常量類型。
var x, y, z int = 1, 2, 3var c, python, java = true, false, "no!"
以上變數定義代碼 x,y,z均為int類型,其初始值分別是1,2,3,c,python是bool類型,初始值為true,false,java是string,值為"no!"
短變數聲明:省略類型的變數可以使用更加簡潔的代碼,例如
c, python, java := true, false, "no!"
省略關鍵字var 在賦值符號前加一個冒號":"
go 語言內建基本類型
boolstringint int8 int16 int32 int64uint uint8 uint16 uint32 uint64 uintptrbyte // alias for uint8rune // alias for int32 // represents a Unicode code pointfloat32 float64complex64 complex128
常量(contants)常量的聲明像變數一樣,在前面加上const 關鍵字,常量的聲明可以是字元,字串,布爾值以及數實值型別,常量不能使用:=初始化
const Pi = 3.14
而不能const Pi := 3.14可以用括弧聲明一組常量
for迴圈
基本的for迴圈看起來和c,java差不多,只是去掉了括弧:
for i := 0; i < 10; i++ { sum += i }
第一個分號聲明變數i並初始化為0,第二個語句定義迴圈結束條件,第三條語句定義迴圈結束後對迴圈因子的操作
for代替while的行為
i:1for i<100{ //dosomething i++}
無條件迴圈while(true)
for{ //loop forever}
if條件
if與for的情況差不多,均是省略了括弧
if expression {}
if a>b{}else if a==b{}else{}
if中也可以聲明變數
if v := math.Pow(x, n); v < lim { return v }
func foo(a,b int) int{ return math.Max(a,b)}