變數可以用來暫存資料,如果需要儲存一個變數需要滿足4個條件 :
- 宣告變數的敘述
- 變數名稱
- 變數要儲存的資料型別
- 變數的初始值
用 var
宣告變數
1 2 3 4 5 6
| var <變數名稱> <變數型別> = <值>
|
這邊我們用 var 宣告一個變數
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| package main
import ( "fmt" )
var test string = "test"
func main() { var fast string = "web" fmt.Println("First test : ", fast) fmt.Println("Second test : ", test, fast) }
|
這邊我們先不討論 變數的作用範圍
,我們先知道如果有宣告和後續並未使用就會出現 <decleared bot not used>
的錯誤就行。這是為了卻確保開發者不要一堆沒有用的變數,徒浪費記憶體空間。
一次宣告多個變數
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| var ( <name1> <category1> = <value1> <name2> <category2> = <value2> )
|
這樣看起來就少打了一些字~~
省略型別或賦值
1 2 3 4 5
| var ( Debug bool log = "fool" startb = time.Now() )
|
如果宣告值沒有給予該初始值,GO語言會自動為變數賦予型別特有的零值 ( zero value )
型別出現問題時……
1 2 3 4 5 6 7 8 9 10 11 12
| package main
import ( "math/rand" )
func main() { var seed = 123456789 rand.Seed(seed) }
|
這邊我們看到了錯誤訊息,問題在於該必要的參數型別為int64
。
go 語言對於一個整數都會將其定義成int
,這個時候我們只要補上int64
即可
1
| var seed int64 = 123456789
|
短變數宣告
這個寫法是最常見的變數定義方式,我們自己試一下
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| package main
import ( "fmt" "time" )
func main() { de := false test := "test" st := time.Now() fmt.Println(de, test, st) }
|
這邊我們一次就來宣告一個多重變數
1 2 3 4 5
| func main() { de , test, st := false, "test", time.Now(); fmt.Println(de, test, st) }
|
最後我們來利用函式解決該問題
1 2 3 4 5 6 7 8 9
| func getvalue()(bool, string, time.Time){ return false, "test", time.Now }
func main() { de , test, st := getvalue(); fmt.Println(de, test, st) }
|
其實在這邊又可回到 var 了
1 2 3 4 5 6 7 8 9 10 11
|
func main() { var ( de bool test string st time.Time ) de , test, st := getvalue(); fmt.Println(de, test, st) }
|
使用 var 宣告多個變數
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
func getvalue() (bool, string, time.Time) { return false, "test", time.Now() }
func main() { var s, m, n int64 fmt.Println(s, m, n)
var a, b, c = "one", 2, 3 fmt.Println(a, b, c)
var De, test, st = getvalue() fmt.Println(De, test, st) }
|
很奇特的一點是能夠用其他語言來做變數命名
1 2 3 4
| func main() { 國中 := "test" fmt.Println(國中) }
|