這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
跟著“碼術”一起學習Golang語言。學習一門新的語言,我們首先瞭解的是新語言的變數聲明,基本類型,關鍵字以及控制流程。本章主要講解變數聲明.
學習Golang語言(1): Hello World
學習Golang語言(2): 變數
學習Golang語言(3):類型--布爾型和數實值型別
學習Golang語言(4):類型--字串
學習Golang語言(5):類型--數組
學習一門新的語言,我們首先瞭解的是新語言的變數聲明,基本類型,關鍵字以及控制流程。
Go語言在文法上類似於C語言。但是不同於C語言,Go雖然也是用分號進行語句分割,但是程式員不需要在每行程式結尾添加分號。Go語言的編譯器會自動在每行末尾添加分號。
但是,如果你需要將兩行(或者更多行)語句放在同一行內,那麼需要使用分號(;)進行分隔。
變數聲明
Go語言不同於其他語言的地方在於:變數的類型在變數名之後。例如:
C中: int a;而在Go中:var a int。
此外,Go語言在定義變數時候如果沒有賦值,則為該變數賦值為其類型的零值。
變數聲明有兩種方式:使用var關鍵字;或者使用:= 操作符賦值。
var number int //聲明變數number為int資料,此時預設複製為0
number := 2 //直接聲明變數number,同時賦值為2
---------------------------------------------
注意
使用 := 操作符聲明變數和其初始值,不必明確指明變數類型,因為初始值已經說明了變數的類型。
:=操作符同時完成了變數聲明和賦值的操作。
使用:= 操作符,對於整形字面量Go語言推斷其類型為int,對於浮點型字面量Go語言推斷其類型為float64 對於複數字面量Go語言推斷其類型為complex128.
通常的做法是不去顯式地聲明其類型,除非我們需要使用一個Go語言無法推斷的特殊類型。
---------------------------------------------
變數聲明還有一下幾點:
同樣可以這麼使用:=操作符:
a,b := 100,101 // 將a和b聲明為int變數同
時分別賦值:100和101
Go中還有一個特殊的變數名 ' _ '(底線) ;它表示所有賦給它的值都被丟棄。
_, b := 100 , 101 // 表示丟棄100,將101賦值給變數b
對於聲明了但沒有使用的變數,在編譯時間候編譯器會報錯。這體現了Go語言簡介的思想:所有無用的代碼,庫都不應該出現。
常量
說道變數聲明,肯定需要談到變數中的特例:常量。
常量在Go中也就是constant。它在編譯時間就被建立,只能是數字,字串或者布爾值。
常量聲明格式: const identifier [type] = value; 例如:const Pi = 3.14159 產生x這個常量。
其中[type] 是可選項。編譯器會根據所賦值的類型自動為常量選擇類型。
const a string = "hello"
const a = "hello"
以上兩個效果一樣。
常量必須是在編譯時間候被賦值,常量可以是被定義為一個計算式,但是計算式中所有值在編譯時間都是確定的。例如:
正確:const c1 = 2/3
錯誤:const c2 = getNumber() / /編譯會出錯,因為getNumber()在編譯時間值不確定。
數值型常量沒有大小和符號的要求,可以是任意高的精度,不會溢出。
const Ln2= 0.693147180559945309417232121458\
176568075500134360255254120680009
const Log2E= 1/Ln2 // 這是一個精確的倒數
const Billion = 1e9 // float 常量
const hardEight = (1 << 100) >> 97
數值型常量只有在賦值給一個精度太低不能代表其值的變數時才溢出。此時編譯時間會報錯。
多個常量聲明:
const beef, two, c = “meat”, 2, “veg”
const Monday, Tuesday, Wednesday, Thursday, Friday, Saturday = 1, 2, 3, 4, 5, 6
const (
Monday, Tuesday, Wednesday = 1, 2, 3
Thursday, Friday, Saturday = 4, 5, 6
)
而在產生枚舉值時候可以使用關鍵字:itoa。
const(
a = itoa
b = itoa
)
第一個itoa表示0,因此a=0,當iota再次在新的一行中被使用,它的值會增加1.因此b =1.
此外,還可以進行一下省略:
const(
a = itoa
b
)
例如: 在 time 庫中: 一周中每天的名字:
const (
Sunday = iota // 0
Monday // 1
Tuesday // 2
Wednesday // 3
Thursday // 4
Friday // 5
Saturday // 6
)
---------------------------------------------
歡迎關注碼術!一起學習golang.