go語言變數

漫長學習路發表於2018-06-08

    變數是所有語言中最基本的元素,程式可以通過定義一個變數來申請一塊資料的記憶體空間。GO語言的變數使用方式和C語言接近,但更具備強大的靈活性。

1.變數宣告

GO語言的變數宣告方式與C和C++語言有明顯的不同。對於純粹的變數宣告,GO語言引入了關鍵字var,而型別資訊放在變數名之後,示例如下:

	var  v1 int //整型
	var v2 stirng //字元型
	var v3[10]int  //陣列
	var v4 []int //陣列切片
	var v5 struct{
		f int
	}
	var v6 *int //指標
	var v7 map[string]int //map key為string型別 value為int型別
	var v8 func(a int) int

變數語句宣告不需要使用分號作為結束符。與其他面嚮物件語言相比,GO語言摒棄了語句必須以分號作為語句結束標記的習慣。

var關鍵字的另一種用法是可以將若干個需要宣告的變數放在一起,免得程式設計師需要重複寫var關鍵字。

var{
		v1 int
		v2 stinrg
	}
	

2 變數初始化

變數初始化的時候可以不再使用var關鍵字

import (
	"fmt"
)

func main() {

	var v1 int = 10
	var v2 = 20
	v3 := 30

	fmt.Println(v1)
	fmt.Println(v2)
	fmt.Println(v3)
}

這裡要注意,如果光宣告不使用go語言會提示錯誤。以上三種用法的效果是完全一樣的,除了第三種宣告方式不能用於宣告全域性變數。指定型別已經不再是必須得了,甚至關鍵字都可以省略,GO編譯器可以從初始化表示式的右值推匯出該變數應該宣告為哪種型別,這讓Go語言看起來有點像動態型別語言,但是其實Go語言是一個強型別的語言(靜態型別)。

3.變數賦值

在Go語法中,變數初始化和變數賦值是兩個不同的概念。下面為宣告一個變數之後的賦值過程

	var v4 int
	v4 = 111

Go語言的變數賦值與多數語言一致,但Go語言中提供了多重賦值功能,比如下面這個交換i和j變數的語句:

i, j = j, i

在不支援多重賦值的語言中,互動兩個變數的內容需要引入一箇中間變數

t=i;i=j;j=t;
4.匿名變數

在使用傳統的強型別語言程式設計,例如java的時候,經常會出現這種情況,即在呼叫函式時為了獲取一個值,卻因為該函式返回多個值不得不去定義一堆沒用的變數,在Go中這種情況可以通過結合使用多重返回和匿名變數來避免這種醜陋的寫法,讓程式碼看起來更加優雅。

func getName() (firstName, lastName, nickName string) {
	return "aaaa", "bbbb", "cccc"
}

//Test()和Test2()在包外也可見
func Test() int {
	_, _, nickName := getName() //GetName呼叫只選擇需要的變數將他返回
	fmt.Println("nikName = ", nickName, "\n")
	return 0
}
這種寫法可以讓程式碼非常清晰,基本上遮蔽掉了可能混淆程式碼閱讀者視線的內容,從而大幅度降低溝通的複雜度和程式碼維護的難度。

相關文章