golang交换两个数的值很简单
i, j = j, i
等号左边和右边含有多个表达式,这就是平行赋值。
计算等号左边的操作数的索引表达式和取址表达式,计算等号右边的表达式。
赋值
意思是先计算所有表达式的值,最后才赋值。
func main() {
i := 1
s := []string{"A", "B", "C"}
i, s[i-1] = 2, "Z"
fmt.Printf("s: %v \n", s)
}
这里输出的 s: [Z,B,C] 而不是s: [A,Z,C]。 这是因为等号左边的切片的索引表达式i-1会被先计算,最后才是赋值。
计算和赋值的顺序,都是从左往右。