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

變量的概念

變量是計算機語言中存儲數據的抽象概念,變量經過變量名訪問程序員

變量的本質是計算機分配的一小塊內存,專門用於存放指定數據,在程序運行過程當中該數值能夠改變bash

變量的存儲每每具備瞬時性、或者說是臨時存儲,當程序運行結束,存放該數據的內存就會釋放,該變量就會消息函數

Go語言的變量名由數字、字母、下劃線組成,首個字符不能是數字ui

聲明變量

聲明變量有多種形式:spa

1.未初始化話的標準格式指針

var  變量名  變量類型
複製代碼

2.未初始化的批量格式code

不用每行都用 var 聲明cdn

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
相關文章
相關標籤/搜索