我正在编写一个使用Go来反转字符串的函数。
func main() {
s := "abcde"
r := []rune(s)
for i, j := 0, len(s)-1; i < j; i, j = i++, j-- {
r[i], r[j] = r[j], r[i]
}
fmt.Printf("%s\n", string(r))
}
然而,编译器对i, j = i++, j--
的抱怨说,
syntax error: unexpected ++, expecting {
。
如果我将其更改为i, j = i+1, j-1
,此功能有效。
我不知道为什么不允许这样做。有人可以帮忙吗?
谢谢你。
答案 0 :(得分:2)
在Go中,x--
和x++
是语句,而不是表达式,所以你不能像那样分配它们,而且它是设计的。
Spec说:
一元运算符具有最高优先级。由于++和 - 运算符形成语句而不是表达式,因此它们不属于运算符层次结构。因此,语句* p ++与(* p)++。
相同