這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。 變數的定義: go總使用var來聲明變數,在函數外面聲明變數的方式有 var 變數1, 變數2, 變數3 [int] = 1, 2, 3,其中int這個型別宣告可以省略。如果在函數內部聲明可以使用以下這種更加簡便的方法 變數1, 變數2, 變數3 := 1, 2, 3,這種方式只能在函數內使用。 常量的使用: go中常量可以定義為數組、布爾值、字串等類型。使用const 常量名 [常量類型] = 常量值。 也可以採用分組聲明的方式,如: const pi = 3.14 const prefix = "Go_"
var i int var sum int 採用分組後: const ( pi = 3.14 prefix = "Go_" ) var ( i int sum int )
在分組聲明是,const分組的第一個常量被預設的設定為0值,第二個及後續的常量被預設設定為他前面那個常量的運算式,如果那個常量的值似乎iota,則它也被設定為iota,iota是go的一個關鍵字,它預設值為0,並逐步增1,注意:只有iota在遇到一個const關鍵字時,它才會被重設為0,如:
const (
i = iota
j = 3.14
k = iota
l
) 那麼列印出來的結果是 i=0,j=3.14,k=2,l=3
const ( _ = iota kb = 1 << (10 * iota) mb gb tb pb )
可以在同一行使用多個iota,他們會各種遞增不會相關幹擾。 const ( i , j = 2*iota, iota m, n ) 內建類型: 布爾值:go中布爾實值型別的值只有兩個,分別是true和false,它與其他值不能相互轉化,如和1、0。 數群組類型:go同時指出無符號和帶符號兩種,其中有rune, int8, int16, int32, int64和byte, uint8, uint16, uint32, uint64,其中rune為int32,btye為uint8的別稱。需要注意的是,這些類型的變數之間不允許互相賦值和操作,不然後在編譯時間報錯。如: var a int8 var b int32 var c = a + b
這樣是不行的,還有int和int32不可以相互操作。浮點型有float32和float64兩種,沒有float類型。複試類型,go預設支援complex128(64位實數+64為虛數),也有complex64。
字串:go中字串採用urf-8編碼,字串用一對雙引號或反引號來定義,字串是不可變的,如果要改變字串的值,可以使用[]rune來強制轉換,再修改完成後再用string()轉換回來。如: s := "hello" c := []rune(s) c[0] = 'c' s := string(c) 注意如果類型中存放值不超過類型範圍,類型可以不用強制轉換,如byte := 'c',可以來存放字元。聲明多行字串可以使用反引號來聲明,字串在代碼中的形式就是列印時的形式,它沒有字元轉義,換行也將原樣輸出。
注意:go對於已聲明而未使用的變數,常量,或引入的包未使用,都會報錯。go的一些預設行為,大寫字母開頭的變數可匯出,也就是在其他包中可以訪問,是公用變數,小寫字母開頭的為私人變數。函數名也一樣,大寫字母開頭的為public函數,小寫字母開頭的為private函數。