變數的概念
變數是計算機語言中儲存資料的抽象概念,變數通過變數名訪問
變數的本質是計算機分配的一小塊記憶體,專門用於存放指定資料,在程式執行過程中該數值可以改變
變數的儲存往往具有瞬時性、或者說是臨時儲存,當程式執行結束,存放該資料的記憶體就會釋放,該變數就會訊息
Go語言的變數名由數字、字母、下劃線組成,首個字元不能是數字
宣告變數
宣告變數有多種形式:
1.未初始化話的標準格式
var 變數名 變數型別
複製程式碼
2.未初始化的批量格式
不用每行都用 var 宣告
var(
a int
b string
c []float32
d func() bool
e struct{
x int
y string
}
)
複製程式碼
未初始化變數的預設值
- 整型和浮點型變數預設值為 0
- 字串預設值為空字串
- 布林型預設值為false
- 函式、指標變數預設值為 nil
package main
import "fmt"
func main() {
var(
a int
b string
c []float32
d bool
e []int
f [3]int
h int32 = 100
g func() string
)
fmt.Printf("%T , % v \n", a , a)
fmt.Printf("%T , % v \n", b , b)
fmt.Printf("%T , % v \n", c , c)
fmt.Printf("%T , % v \n", d , d)
fmt.Printf("%T , % v \n", e , e)
fmt.Printf("%T , % v \n", f , f)
fmt.Printf("%T , % v \n", h , h)
fmt.Printf("%T , % v \n", g , g)
}
複製程式碼
輸出如下:
int , 0
string ,
[]float32 , []
bool , false
[]int , []
[3]int , [ 0 0 0]
int32 , 100
func() string , <nil>
複製程式碼
3.初始化變數的標準格式
- var 變數名 型別 = 表格式
4.初始化變數的編譯器自動推斷型別格式
- var 變數名 = 表示式
5.初始化變數的簡短宣告格式(短變數宣告格式)
- 變數名 := 表示式
- 使用 := 賦值操作符, := 可以高效的建立一個新的變數,稱之為初始化宣告
- 宣告語句省略了 var 關鍵字
- 宣告型別將由編譯器自動推斷
- 這是宣告變數的首選方式,但是它只能被用在函式體內,而不可以用於全域性變數的宣告與賦值
- 該變數名必須是沒有定義過的變數,若定義過,將發生編譯錯誤
- 在多個短變數宣告和賦值中,至少有一個新宣告的變數出現在左側中,那麼即便有其他變數名可能是重複宣告的,編譯器也不會報錯
變數多重賦值
- Go語法中,變數初始化和變數賦值是兩個不同的概念,Go語言的變數賦值與其他語言一樣,但是Go提供了其他程式設計師期待已久的多重賦值功能,可以實現變數替換,多重賦值讓Go語言比其他語言減少了程式碼量
如想要對 q 和 w 變數的值進行互換:
q := 10
w := 20
fmt.Println(q , " " , w)
q, w = w, q
fmt.Println(q , " " , w)
複製程式碼
得到的結果為:
10 20
20 10
複製程式碼
有了變數的多重賦值,就不用像Java中引入第三個變數,來進行兩個變數值的互換。
匿名變數
- Go語言的函式可以返回多個值,而事實上我們並不是對所有的返回值都用得上,那麼就可以使用匿名變數,用“_”下劃線替換即可。
- 匿名變數不佔用名稱空間,不會分配記憶體
歡迎關注我的公眾號~ 搜尋公眾號: 翻身碼農把歌唱 或者 掃描下方二維碼: