//go:noinline
//go:nosplit
func test() (int, int)
func main()
多變數賦值涉及計算規則問題,很多語言對於多變數賦值其實是個坑。go 語言的做法先計算右邊的值,然後批量對左邊進行賦值。
a, b := 1, 2
沒有歧義,a, b = b+1, a+2
怎麼計算呢?第一種解釋先計算b+1
把這個結果賦值給a
那麼a = 3
,然後計算a+2
那麼a = 5
那b = 5
。第二種解釋是什麼?先把b+1
和a+2
計算出來再進行a
和b
的賦值a
和b
都等於3。處理順序到底是什麼?我們需要用反彙編的方式來確認。
$ go build -gcflags "-n -l"
$ go tool objdump -s "main\.test" test
main.go:5 movq $0x0, 0x30(sp) # ret1 = 0 30(sp)
main.go:5 movq $0x0, 0x38(sp) # ret2 = 0 38(sp)
main.go:6 movq $0x1, 0x8(sp) # a = 1 8(sp)
main.g
python用,進行多變數賦值
多變數賦值 陣列形式 data hello 18 2002,2 2 name,age,birth data print name print age print birth 多變數賦值 元組形式 data hello 18 2002,2 2 name,age,birth data print nam...
JS中變數命名和賦值規則
1.嚴格區分大小寫 2.首字元只能是字母 下劃線 不能是數字,其他字元可以是字母 數字 下劃線 3.開始是 符的一般是jquery庫或者其他的類庫里宣告的變數 4.object物件型別的原型,命名以o開頭 5.首字元是下劃線的一般表示私有變數,如 var total 6.採用駝峰命名法,即由多個單詞...
Python 變數型別 變數賦值
變數賦值 python 中的變數賦值不需要型別宣告。每個變數在記憶體中建立,都包括變數的標識,名稱和資料這些資訊。每個變數在使用前都必須賦值,變數賦值以後該變數才會被建立。等號 用來給變數賦值。等號 運算子左邊是乙個變數名,等號 運算子右邊是儲存在變數中的值。例如 例項 python 2.0 usr...