程式設計最簡單的演算法之一,莫過於變數交換。交換變數的常見演算法需要乙個中間變數進行變數的臨時儲存。用傳統方法編寫變數交換**如下:
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)
**說明如下: Golang 多個變數同時賦值
程式設計最簡單的演算法之一,莫過於變數交換。交換變數的常見演算法需要乙個中間變數進行變數的臨時儲存。用傳統方法編寫變數交換 如下 var a int 100 var b int 200 var t int t a a b b t fmt.println a,b 在計算機剛發明時,記憶體非常 精貴 這...
python 同時給多個變數賦值
python中可以同時給多個變數賦值,下面列舉了三種方法 assign values directly a,b 0,1 assert a 0 assert b 1 assign values from a list r,g,b red green blue assert r red assert g...
Go語言從入門到精通 多個變數同時賦值
程式設計最簡單的演算法之一,莫過於變數交換。交換變數的常見演算法需要乙個中間變數進行變數的臨時儲存。用傳統方法編寫變數交換 如下 var a int 100 var b int 200 var t int t a a b b t fmt.println a,b 在計算機剛發明時,記憶體非常 精貴 這...