Golang에서 Do-While 루프 시뮬레이션하기
Mar 01, 2025
# Go
Emily Parker
Product Engineer · Leapcell

Key Takeaways
- Go에는 내장된
do...while
루프가 없지만,for
루프를 사용하여 유사한 동작을 모방할 수 있습니다. - 초기
true
조건이 있는for
루프는 최소한 한 번 실행되도록 보장합니다. break
를 사용하는 무한for
루프도do...while
동작을 시뮬레이션할 수 있습니다.
Go에는 다른 프로그래밍 언어에서 볼 수 있는 내장된 do...while
루프가 없습니다. 그러나 for
루프를 사용하여 유사한 기능을 구현할 수 있습니다. 일반적인 접근 방식은 루프가 최소한 한 번 실행되도록 보장하는 조건을 가진 for
루프를 사용하는 것입니다. 구현 방법은 다음과 같습니다.
package main import "fmt" func main() { var input int for ok := true; ok; ok = (input != 2) { fmt.Println("Press 1 to run") fmt.Println("Press 2 to exit") _, err := fmt.Scanln(&input) if err != nil { fmt.Println("Invalid input") break } switch input { case 1: fmt.Println("Running...") case 2: fmt.Println("Exiting...") // The loop will exit naturally on the next iteration check default: fmt.Println("Invalid selection") } } }
이 예제에서:
input
변수를 선언하여 사용자 입력을 저장합니다.for
루프는ok
가true
로 설정된 상태로 시작하여 루프가 최소 한 번 실행되도록 보장합니다.- 각 반복 후
ok
는(input != 2)
조건에 따라 업데이트됩니다. 사용자가2
를 입력하면ok
가false
가 되고 루프가 종료됩니다. - 루프 내에서 사용자에게 프롬프트를 표시하고
fmt.Scanln
을 사용하여 입력을 읽습니다. switch
문은 사용자 입력에 따라 다른 경우를 처리합니다.
이 패턴은 do...while
루프를 효과적으로 모방하여 조건이 평가되기 전에 루프 내부의 코드가 최소한 한 번 실행되도록 보장합니다.
또는 break
문을 사용하여 루프 종료를 제어하는 무한 for
루프를 사용할 수 있습니다.
package main import "fmt" func main() { var input int for { fmt.Println("Press 1 to run") fmt.Println("Press 2 to exit") _, err := fmt.Scanln(&input) if err != nil { fmt.Println("Invalid input") continue } switch input { case 1: fmt.Println("Running...") case 2: fmt.Println("Exiting...") break // Exit the loop default: fmt.Println("Invalid selection") } } }
이 버전에서:
- 무한
for
루프를 사용합니다:for { ... }
. - 사용자가
2
를 입력하면break
문을 사용하여 루프를 종료합니다. - 입력이 유효하지 않으면
continue
문이 다음 반복으로 건너뜁니다.
두 가지 접근 방식 모두 Go에서 유효하며 특정 요구 사항 및 코딩 스타일에 따라 do...while
루프를 시뮬레이션하는 데 사용할 수 있습니다.
FAQs
Go는 단순성과 일관성을 선호하여 for
를 유일한 반복 구조로 사용합니다.
for ok := true; ok; ok = condition
또는 break
문이 있는 무한 for
루프를 사용하십시오.
명확성을 위해 for ok := true
를 사용하거나 유연성을 위해 break
가 있는 무한 루프를 사용하십시오.
Leapcell은 Go 프로젝트 호스팅을 위한 최고의 선택입니다.
Leapcell은 웹 호스팅, 비동기 작업 및 Redis를 위한 차세대 서버리스 플랫폼입니다:
다국어 지원
- Node.js, Python, Go 또는 Rust로 개발하십시오.
무제한 프로젝트를 무료로 배포하세요
- 사용량에 대해서만 지불하세요 — 요청 없음, 요금 없음.
탁월한 비용 효율성
- 유휴 요금 없이 사용한 만큼 지불하세요.
- 예: $25로 평균 응답 시간 60ms에서 694만 건의 요청을 지원합니다.
간소화된 개발자 경험
- 간편한 설정을 위한 직관적인 UI.
- 완전 자동화된 CI/CD 파이프라인 및 GitOps 통합.
- 실행 가능한 통찰력을 위한 실시간 메트릭 및 로깅.
손쉬운 확장성 및 고성능
- 쉬운 동시성 처리를 위한 자동 확장.
- 운영 오버헤드가 전혀 없습니다. 구축에만 집중하세요.
문서에서 더 자세히 알아보세요!
X에서 팔로우하세요: @LeapcellHQ