
Go 언어에 do-while이 없다고? 걱정 마세요! for 루프로 완벽 재현 비법 대공개!
프로그래밍을 하다 보면 "일단 한번 실행하고 나서 조건을 확인할까?"하는 순간이 꼭 찾아옵니다.
다른 언어에서는 do...while
이라는 반복문이 있어서 이런 고민을 쉽게 해결해 주는데요.
하지만 Go 언어에는 아쉽게도 do...while
반복문이 직접적으로 존재하지 않습니다.
그렇다고 실망하기는 이릅니다! Go 언어의 만능 재주꾼 for
반복문을 사용하면 얼마든지 비슷한 효과를 낼 수 있답니다.
오늘은 Go 언어에서 do...while
반복문처럼, 반복문 안의 코드를 최소한 한 번은 실행시키고 나서 특정 조건에 따라 반복을 계속할지 말지를 결정하는 방법을 쉽고 재미있게 알아보도록 하겠습니다.
1. 첫 번째 방법: 반복문에 '일단 실행' 마법 걸기!
가장 일반적인 방법은 for
반복문의 조건을 살짝 비틀어서 처음에는 무조건 반복문 안의 코드가 실행되도록 만드는 것입니다.
마치 "일단 문 열고 들어가서 상황 보고, 계속 있을지 말지 결정하자!"와 비슷한 느낌인데요.
코드를 통해 직접 확인해 볼까요?
package main
import "fmt"
func main() {
var input int
// ok 변수를 true로 시작하여 반복문이 최소 한 번 실행되도록 합니다.
for ok := true; ok; ok = (input != 2) {
fmt.Println("실행하려면 1번을 누르세요")
fmt.Println("종료하려면 2번을 누르세요")
// 사용자로부터 입력을 받습니다.
_, err := fmt.Scanln(&input)
if err != nil {
fmt.Println("잘못된 입력입니다.")
// 잘못된 입력 시 반복문을 종료합니다.
break
}
switch input {
case 1:
fmt.Println("실행 중...")
case 2:
fmt.Println("종료 중...")
// 다음 반복 검사에서 ok가 false가 되어 반복문이 자연스럽게 종료됩니다.
default:
fmt.Println("잘못된 선택입니다.")
}
}
}
자, 위 코드를 자세히 살펴볼까요?
먼저 사용자 입력을 저장할 input
이라는 변수를 하나 만들어 줍니다.
핵심은 바로 for
반복문의 시작 부분인데요.ok := true
라고 해서, ok
라는 변수를 true
로 시작시킵니다.for
반복문은 조건(ok
의 값)이 true
인 동안 계속 실행되니까, 이렇게 하면 반복문 안의 코드가 최소한 한 번은 무조건 실행되는 마법이 펼쳐집니다.
한 번 반복문 안의 코드가 실행되고 나면, ok = (input != 2)
라는 조건에 따라 ok
변수의 값이 업데이트됩니다.
만약 사용자가 2를 입력하면 input != 2
는 false
가 되고, ok
도 false
가 되어 반복문은 다음 검사에서 자연스럽게 종료됩니다.
사용자가 1을 입력하면 ok
는 true
를 유지하며 반복문은 계속 실행되겠죠?fmt.Scanln
함수는 사용자로부터 한 줄을 입력받는 역할을 하고, switch
문은 사용자의 입력값에 따라 다른 동작을 하도록 해줍니다.
이처럼 for
반복문의 초기 조건을 true
로 설정하는 간단한 방법으로 do...while
반복문의 "최소 한 번 실행"이라는 핵심 기능을 똑같이 구현할 수 있습니다.
2. 두 번째 방법: 무한 루프와 의 환상적인 만남!
또 다른 방법으로는, 마치 끝없이 돌아가는 팽이처럼 무한 for
반복문을 만들고, 특정 조건이 만족되면 break
키워드로 탈출하는 방법도 있답니다.
이 방법도 코드로 바로 확인해 보겠습니다.
package main
import "fmt"
func main() {
var input int
// 조건 없는 for 반복문은 무한 루프를 만듭니다.
for {
fmt.Println("실행하려면 1번을 누르세요")
fmt.Println("종료하려면 2번을 누르세요")
// 사용자로부터 입력을 받습니다.
_, err := fmt.Scanln(&input)
if err != nil {
fmt.Println("잘못된 입력입니다.")
// 잘못된 입력 시 현재 반복을 건너뛰고 다음 반복으로 넘어갑니다.
continue
}
switch input {
case 1:
fmt.Println("실행 중...")
case 2:
fmt.Println("종료 중...")
// break 문을 사용하여 반복문을 즉시 종료합니다.
break
default:
fmt.Println("잘못된 선택입니다.")
}
}
}
이 방법에서는 for { ... }
와 같이 조건 없이 for
반복문을 시작합니다.
이러면 일단 무한 루프, 즉 끝없이 반복되는 구조가 만들어집니다.
하지만 걱정 마십시오! 사용자가 2를 입력하는 경우처럼 특정 조건이 만족되면, break
라는 마법의 주문을 외쳐서 이 무한 루프를 탈출할 수 있습니다.break
는 현재 실행 중인 반복문을 즉시 빠져나오게 하는 강력한 명령어입니다.
만약 사용자가 잘못된 값을 입력하면, continue
문을 사용해서 현재 반복을 건너뛰고 바로 다음 반복으로 넘어갈 수 있습니다.
마치 게임에서 "이번 판은 무효!"하고 다음 판으로 넘어가는 것과 비슷합니다.
이처럼 무한 for
반복문과 break
문을 조합하는 것도 do...while
반복문의 기능을 훌륭하게 대체할 수 있는 좋은 방법입니다.
3. 어떤 방법을 선택해야 할까요? 정답은 없습니다!
오늘 우리는 Go 언어에서 do...while
반복문을 흉내 낼 수 있는 두 가지 방법을 알아보았습니다.for
반복문의 초기 조건을 true
로 설정하는 방법과, 무한 for
반복문과 break
를 사용하는 방법인데요.
두 가지 방법 모두 각각의 장단점이 있다기보다는, 개발자의 취향이나 특정 상황에 따라 더 자연스럽게 느껴지는 방법을 선택하면 됩니다.
중요한 것은 Go 언어에는 do...while
이 없다고 해서 좌절할 필요 없이, for
반복문이라는 강력하고 유연한 도구를 활용하여 원하는 로직을 충분히 구현할 수 있다는 사실입니다.
어떤 방법을 선택하든, 이제 Go 언어에서도 do...while
반복문이 필요할 때 당황하지 않고 멋지게 구현할 수 있게 되셨기를 바랍니다!
'Go' 카테고리의 다른 글
Go 언어 파일 읽기 완전 정복: 효율적인 방법과 핵심 꿀팁 대방출! (0) | 2025.05.27 |
---|---|
Go 언어 열거형(Enum) 완벽 정복! 아이오타(iota)로 상수 다루는 꿀팁 대방출! (0) | 2025.05.27 |
Go 개발 환경 청소의 달인! go clean 명령어로 개발 환경 상쾌하게 만들기 (0) | 2025.05.27 |
Go 언어 시간 관리의 두 마법사: Timer와 Ticker 완벽 이해! (0) | 2025.05.27 |
고(Go)에서 특정 폴더를 패키지 취급 안 받게 하는 법? 이렇게 해보세요! (0) | 2025.05.20 |