Go語言學習(3) - 變數與初始化

翻身碼農把歌唱發表於2018-11-11

變數的概念

變數是計算機語言中儲存資料的抽象概念,變數通過變數名訪問

變數的本質是計算機分配的一小塊記憶體,專門用於存放指定資料,在程式執行過程中該數值可以改變

變數的儲存往往具有瞬時性、或者說是臨時儲存,當程式執行結束,存放該資料的記憶體就會釋放,該變數就會訊息

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語言的函式可以返回多個值,而事實上我們並不是對所有的返回值都用得上,那麼就可以使用匿名變數,用“_”下劃線替換即可。
  • 匿名變數不佔用名稱空間,不會分配記憶體

歡迎關注我的公眾號~ 搜尋公眾號: 翻身碼農把歌唱 或者 掃描下方二維碼:

img

相關文章