2014-07-12 2 views
2

나는 Go를 사용하여 문자열을 뒤집는 함수를 작성하고 있습니다.For go in 프로그래밍 언어

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으로 변경하면 작동합니다. 이것이 허용되지 않는 이유를 모르겠습니다. 누구든지 도울 수 있니? 감사합니다.

답변

2

이동 중이면 x--x++은 표현식이 아니라 명령문이므로 할당 할 수 없으며 의도적으로 설계된 것입니다.

Spec

는 말한다 :

단항 연산자가 가장 높은 우선 순위를 가지고있다. ++ 및 - 연산자는 표현식이 아닌 명령문을 구성하기 때문에 연산자 계층 구조를 벗어납니다. 결과적으로, 문장 * p ++은 (* p) ++와 동일합니다.

+1

고마워요! 정말 좋은 설명입니다. – SSDong

+2

또한 표현식이있는 언어에서'i = i ++'는 약간의 의미가 있습니다 : "i를 증가"하고 "i"에 사전 증가 값을 저장합니까? –