變量的定義:
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 ui
j = 3.14 編碼
k = iota spa
l 字符串
) 那麼打印出來的結果是 i=0,j=3.14,k=2,l=3 string
const (
_ = iota
kb = 1 << (10 * iota)
mb
gb
tb
pb
)
能夠在同一行使用多個iota,他們會各類遞增不會相關干擾。
const (
i , j = 2*iota, iota
m, n
)
內置類型:
布爾值:go中布爾值類型的值只有兩個,分別是true和false,它與其餘值不能相互轉化,如和一、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。 io
字符串:go中字符串採用urf-8編碼,字符串用一對雙引號或反引號來定義,字符串是不可變的,若是要改變字符串的值,能夠使用[]rune來強制轉換,再修改完成後再用string()轉換回來。如:
s := "hello"
c := []rune(s)
c[0] = 'c'
s := string(c)
注意若是類型中存放值不超過類型範圍,類型能夠不用強制轉換,如byte := 'c',能夠來存放字符。聲明多行字符串能夠使用反引號來聲明,字符串在代碼中的形式就是打印時的形式,它沒有字符轉義,換行也將原樣輸出。
注意:go對於已聲明而未使用的變量,常量,或引入的包未使用,都會報錯。go的一些默認行爲,大寫字母開頭的變量可導出,也就是在其餘包中能夠訪問,是公用變量,小寫字母開頭的爲私有變量。函數名也同樣,大寫字母開頭的爲public函數,小寫字母開頭的爲private函數。