使用 var 關鍵字是Go最基本的變數宣告方式:
//將型別放在變數名稱後方
var name string
var age int
var enable bool
在變數名稱後加上變數型別,若無賦值(初始化)則變數會被初始化成其型別的預設值。
整型和浮點型變數的預設值為 0
字串變數的預設值為空字串 ""
布林型變數預設為 false
切片、函式、指標變數的預設為 nil
要注意的是變數名稱、型別…等都是 有區分大小寫 的。
//型態區分大小寫
var name String //Wrong
var name string
var age Int //wrong
var age int
//變數名稱區分大小寫
var Computer = "大寫C"
var computer = "小寫c"
fmt.Println(Computer,computer) //大寫C 小寫c
1.變數名稱首字符不能為數字,可以是字母或者下划線(_):
_myName
_temp
iPad
applePencil
a_123
2021 // wrong
4abc // wrong
2.Go語言中關鍵字和保留字都不能作變數名,也不能帶有運算符(+,-,*,/…)
關鍵字即是被Go語言賦予特殊涵義的單字,也可稱為保留字。Go語言中的關鍵字共有25個:
3.Go 語言中的變數需要宣告後才能使用,並且宣告後必須使用。
var name string = "小明"
var age int = 18
注意:字串必須使用“雙引號”,‘單引號’ 會報錯
Go 還可以根據你賦予的初值來判斷該變數為何種型別,因此也能這麼寫:
var name,address,email = "小明","台北市","a123@gmail.com"
fmt.Println(name) //印出變數值 小明
fmt.Println(name,address,email) //多個變數印出 小明 台北市 a123@gmail.com
使用 :=
省略掉 var 並初始化變數,要注意的是 :=
左側必須為新定義的變數
name, address, email := "小明", "台北市", "a123@gmail.com"
fmt.Println(name,address,email) //小明 台北市 a123@gmail.com
像是下方這個例子會引發編譯錯誤:
var age int
age := 21 //編譯錯誤 age已經定義不需重新定義
只能在函數體內使用 :=
宣告變數,不可用於全局變數的宣告與賦值。
常數為在程式編譯階段就確定下來的值,而程式在執行時無法改變該值。
常數可定義為數值、布林值或字串等型別。
const Pi = 3.1415926
const Size = 50
const prefix = "Pluto_"
Size = 20 // 當你試著去修改常數的值,會引發 cannot assign to Size 錯誤
自增長常數,在const{}
添加一個關鍵字 iota ,每行的iota都會累加1,第一行iota默認為0
const(
Taipei = iota
Taoyuan
Taichung
Kaohsiung
Tainan
)
fmt.Println(Taipei) //0
fmt.Println(Taoyuan) //1
fmt.Println(Taichung) //2
fmt.Println(Kaohsiung) //3
fmt.Println(Tainan) //4
iota可以定義數量級(ex: KB,MB,GB,TB…等類似的單位也可以用此來定義)
const(
Taipei = iota*10
Taoyuan
Taichung
Kaohsiung
Tainan
)
fmt.Println(Taipei) //0
fmt.Println(Taoyuan) //10
fmt.Println(Taichung) //20
fmt.Println(Kaohsiung) //30
fmt.Println(Tainan) //40
複雜一點的話
const(
a,b = iota+1,iota+2 // iota = 0 , a = 0+1 = 1 , b = 0+2 = 2
c,d // iota = 1 , c = 1+1 = 2 , d = 1+2 = 3
e,f // iota = 2 , e = 2+1 = 3 , f = 2+2 = 4
g,h = iota*2,iota*3 //iota = 3 , g = 3*2 = 6 , h = 3*3 = 9
i,j //iota = 4 , i = 4*2 = 8 , j = 4*3 = 12
)
fmt.Println("a = %d , b = %d",a,b) // a = 1 , b = 2
fmt.Println("c = %d , d = %d",c,d) // c = 2 , d = 3
fmt.Println("e = %d , f = %d",e,f) // e = 3 , f = 4
fmt.Println("g = %d , h = %d",g,h) // g = 6 , h = 9
fmt.Println("i = %d , j = %d",i,j) // i = 8 , j = 12
同時宣告多個變數、常數或匯入多個套件時都可以採用分組的方式進行宣告。
import "fmt"
import "os"
可寫為:
import(
"fmt"
"os"
)
const Pi = 3.1415926
const Size = 50
const prefix = "Pluto_"
可寫為:
const(
Pi = 3.1415926
Size = 50
prefix = "Pluto_"
)
var i int
var pi float32
var enable bool
可寫為
var(
i int
pi float32
enable bool
)