2017-08-05 57 views
8

我知道golang支持多種任務,例如,是否多個任務有秩序golang

a, b = c, d 

我想知道,如果下左>右的順序分配?例如,如果我玩樹木:

parent, child = child, child.child 

它是否保證父母和孩子都在樹中分配了一個級別?

回答

14

是的。來自language spec

分配按兩個階段進行。首先,左側的索引表達式和指針間接指針(包括選擇器中的隱式指針間接指針)和右側表達式的操作數均按通常順序進行評估。其次,作業按照從左到右的順序進行。

所以在你的榜樣,childchild.child將首先進行評估,然後分別分配給parentchild

+0

這很有趣。但是當我嘗試在這裏使用多個任務交換一個值https://play.golang.org/p/76Q8OSGfr4時,它只是起作用,看起來像在操作過程中將值複製到另一個位置。 – Kebeng

+0

@Kebeng:是的,上面引用的文字中隱含的是,被評估的右側表達式的值會臨時存儲,直到它們被分配給左側變量。 – Flimzy