golangkorea / golang-spec

Go 언어 스펙 한글 번역
https://www.gitbook.com/book/gosudaweb/go-language-specification-in-korean/details
Other
86 stars 22 forks source link

라벨이 있는 continue문 #329

Open dakeshi opened 6 years ago

dakeshi commented 6 years ago

continue 챕터 리뷰 과정에서 라벨이 있는 continue 문과 관련된 토론이 진행되었습니다. break 문에도 적용되는 사항입니다.

토론의 대상이 된 원문 문장은 다음과 같습니다. https://golang.org/ref/spec#Continue_statements

If there is a label, it must be that of an enclosing "for" statement, and that is the one whose execution advances.

토의내용

@ezaurum

라벨이 있는 경우에는, "for" 문 내부에 continue 문이 있어야 하며, 라벨과 함께 사용된 continue 문은 다음 단계로 실행을 진행시킨다.

로 제안(@dakeshi)을 해주셨는데, for 문 내부에 continue 문이 있어야 하는 것은 물론 맞지만, 이 문장은 https://play.golang.org/p/CY__SPEg0sB 이런 경우 처럼, continue 문이 가리키는 라벨은 for 문에 붙어있어야 한다는 게 맞는 의미입니다. 첨부한 코드는 label 지정이 잘못 되었다고 실행이 안 됩니다. for 붙은 것만 실행이 되어야 하지요.

@dakeshi 라벨문의 경우 for문과 연계해서 사용해야 한다고 표현하는게 맞겠군요.

@ezaurum 넵. 그리고 for문에 붙은 라벨이더라도 해당 continue 문을 에워싸는 for 문에 붙은 라벨이 아니면 실행이 안 됩니다.

@dakeshi enclosing for statement가 두 가지 의미를 가진 거라고 봐야할까요? for 문 내부에 continue 문이 있어야 하고 라벨 문은 for 문과 연계해서 사용해야 한다. 처럼요. enclosing for statement는 for 문 내부에 continue 문이 있어야 한다는 의미보다는 라벨 문은 for문과 함께 사용해야 한다는 의미로만 번역해도 될 것 같네요.

@ezaurum 아뇨. continue [Label] 형태는 for 문 바깥에서는 실행이 안 되니까 해당 부분도 들어가야 합니다. 그런데 에워싸는 for문이 의미가 명확하지 않은가요? for { continue } 이 형태니까 for 문이 continue를 에워싸고 있다고 표현하면 이해가 쉬워 보이는데요. for 내부에 continue 문이 있어야 한다고 하면 외 A: for { continue B } B: for { continue A } 이것도 되어야 하는데 이건 안 되거든요.

@dakeshi 좋은 의견이십니다. enclosing의 한글 표현이 에워싸다, 둘러싸다 이렇게 있는데 에워싸인 이라는 표현을 쓸려면 continue문을 에워싸는 for문 이렇게 번역해야 자연스러울 것 같네요. 정리하자면, 라벨이 있는 경우 continue문을 에워싸는 for문이 있어야 하며...이렇게 표현하면 어떨까요?

@ezaurum 라벨이 있는 경우 continue문을 에워싸는 for문의 라벨이어야 하며... 이 쪽이 명확해 보입니다.