8
我知道golang支持多種任務,例如,是否多個任務有秩序golang
a, b = c, d
我想知道,如果下左>右的順序分配?例如,如果我玩樹木:
parent, child = child, child.child
它是否保證父母和孩子都在樹中分配了一個級別?
我知道golang支持多種任務,例如,是否多個任務有秩序golang
a, b = c, d
我想知道,如果下左>右的順序分配?例如,如果我玩樹木:
parent, child = child, child.child
它是否保證父母和孩子都在樹中分配了一個級別?
是的。來自language spec:
分配按兩個階段進行。首先,左側的索引表達式和指針間接指針(包括選擇器中的隱式指針間接指針)和右側表達式的操作數均按通常順序進行評估。其次,作業按照從左到右的順序進行。
所以在你的榜樣,child
和child.child
將首先進行評估,然後分別分配給parent
和child
。
這很有趣。但是當我嘗試在這裏使用多個任務交換一個值https://play.golang.org/p/76Q8OSGfr4時,它只是起作用,看起來像在操作過程中將值複製到另一個位置。 – Kebeng
@Kebeng:是的,上面引用的文字中隱含的是,被評估的右側表達式的值會臨時存儲,直到它們被分配給左側變量。 – Flimzy