程式設計最簡單的演算法之一,莫過於變數交換。交換變數的常見演算法需要乙個中間變數進行變數的臨時儲存。用傳統方法編寫變數交換**如下:
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)
**說明如下:
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 03 多個變數同時賦值
程式設計最簡單的演算法之一,莫過於變數交換。交換變數的常見演算法需要乙個中間變數進行變數的臨時儲存。用傳統方法編寫變數交換 如下 var a int 100 var b int 200 var t int t a a b b t fmt.println a,b 在計算機剛發明時,記憶體非常 精貴 這...
Python 等式同時對多個變數的賦值說明
python可以利用等式對多個變數同時賦值,如 a,b,c 1,2,3。利用這個特性可以很簡潔的寫出變數交換的 a 1b 2a,b b,a執行上述 後 a 2,b 1。這樣就快速的完成了a,b變數之間的交換。下面解釋 執行過程 上述 執行到第三行,先計算等式右邊的b值,等式邊為 a,b 2,a。然後...