Go語言從入門到精通 多個變數同時賦值

2021-09-12 20:58:45 字數 949 閱讀 5112

程式設計最簡單的演算法之一,莫過於變數交換。交換變數的常見演算法需要乙個中間變數進行變數的臨時儲存。用傳統方法編寫變數交換**如下:

var a int = 100

var b int = 200

var t int

t = a

a = b

b = t

fmt.println(a, b)

在計算機剛發明時,記憶體非常「精貴」。這種變數交換往往是非常奢侈的。於是計算機「大牛」發明了一些演算法來避免使用中間變數:

var a int = 100

var b int = 200

a = a ^ b

b = b ^ a

a = a ^ b

fmt.println(a, b)

這樣的演算法很多,但是都有一定的數值範圍和型別要求。

到了 go 語言時,記憶體不再是緊缺資源,而且寫法可以更簡單。使用 go 的「多重賦值」特性,可以輕鬆完成變數交換的任務:

var a int = 100

var b int = 200

b, a = a, b

fmt.println(a, b)

多重賦值時,變數的左值和右值按從左到右的順序賦值。

多重賦值在 go 語言的錯誤處理和函式返回值中會大量地使用。

例如,使用 go 語言進行排序時就需要使用交換,**如下:

type intslice int

func (p intslice) len() int

func (p intslice) less(i, j int) bool

func (p intslice) swap(i, j int)

**說明如下:

本小節主要講解如何對多個變數進行同時賦值。

Go語言從入門到精通 匿名變數

在使用多重賦值時,如果不需要在左值中接收變數,可以使用匿名變數 anonymous variable 匿名變數的表現是乙個下畫線 使用匿名變數時,只需要在變數宣告的地方使用下畫線替換即可。例如 func getdata int,int a,getdata b getdata fmt.println ...

Go語言從入門到精通 變數的宣告

變數 variable 的功能是儲存使用者的資料。不同的邏輯有不同的物件型別,也就有不同的變數型別。經過半個多世紀的發展,程式語言已經形成一套固定的型別,這些型別在不同的程式語言中基本是相通的。常見變數的資料型別有 整型 浮點型 布林型 結構體等。go 語言作為c語言家族的新派代表,在c語言的定義方...

Go語言從入門到精通 變數的宣告

變數 variable 的功能是儲存使用者的資料。不同的邏輯有不同的物件型別,也就有不同的變數型別。經過半個多世紀的發展,程式語言已經形成一套固定的型別,這些型別在不同的程式語言中基本是相通的。常見變數的資料型別有 整型 浮點型 布林型 結構體等。go 語言作為c語言家族的新派代表,在c語言的定義方...