🔥 swift 문

333자
4분

Go 언어에서 switch 문은 일련의 if - else 문을 더 간결하게 표현할 수 있게 해줍니다. switch 문은 조건식과 일치하는 첫 번째 case 문을 실행하게 되죠.

Go의 switch 문은 C, C++, Java, JavaScript, PHP 등의 언어와 유사하지만, 선택된 case 문만 실행하고 그 뒤에 오는 case 문들은 실행하지 않는다는 점에서 차이가 있습니다. 다른 언어에서는 각 case 문 마지막에 break 문을 명시적으로 써줘야 하지만, Go에서는 자동으로 break 문이 제공된다고 보면 되겠네요. 또 다른 중요한 차이점은 Go의 switch 문에서는 case 값이 상수일 필요가 없고, 정수일 필요도 없다는 것입니다.

아래 코드 예제를 통해 switch 문의 사용법을 자세히 살펴보겠습니다.

go
package main
 
import (
    "fmt"
    "runtime"
)
 
func main() {
    fmt.Print("Go runs on ")
 
    // runtime.GOOS로 현재 운영체제를 확인하여 os 변수에 할당
    switch os := runtime.GOOS; os {
    case "darwin":
        // os가 "darwin"인 경우 실행
        fmt.Println("OS X.")
    case "linux":
        // os가 "linux"인 경우 실행
        fmt.Println("Linux.")
    default:
        // 위의 case에 해당하지 않는 경우 실행
        // freebsd, openbsd, plan9, windows 등
        fmt.Printf("%s.\n", os)
    }
}
 
go
package main
 
import (
    "fmt"
    "runtime"
)
 
func main() {
    fmt.Print("Go runs on ")
 
    // runtime.GOOS로 현재 운영체제를 확인하여 os 변수에 할당
    switch os := runtime.GOOS; os {
    case "darwin":
        // os가 "darwin"인 경우 실행
        fmt.Println("OS X.")
    case "linux":
        // os가 "linux"인 경우 실행
        fmt.Println("Linux.")
    default:
        // 위의 case에 해당하지 않는 경우 실행
        // freebsd, openbsd, plan9, windows 등
        fmt.Printf("%s.\n", os)
    }
}
 

위 코드에서는 runtime 패키지의 GOOS 상수를 사용하여 현재 프로그램이 실행 중인 운영체제를 확인합니다. 그리고 switch 문을 사용하여 운영체제에 따라 다른 메시지를 출력하고 있죠.

switch 문의 조건식으로 os := runtime.GOOS를 사용하였는데, 이는 runtime.GOOS 값을 os 변수에 할당하면서 동시에 조건식으로 사용하는 방식입니다.

case 문에서는 os 변수의 값과 일치하는 경우 해당 case 블록 내의 코드를 실행합니다. os가 "darwin"이면 "OS X."를 출력하고, "linux"이면 "Linux."를 출력하게 되는 거죠.

만약 os 값이 case 문에서 지정한 값과 일치하지 않는 경우, 즉 "freebsd", "openbsd", "plan9", "windows" 등인 경우에는 default 문이 실행되어 해당 운영체제 이름을 출력하게 됩니다.

이렇게 Go의 switch 문을 사용하면 조건에 따라 분기 처리를 간결하고 명확하게 표현할 수 있습니다. 코드의 가독성을 높이고 if - else 문을 반복적으로 사용하는 것을 피할 수 있게 되죠.

참고로 위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

shell
$ go run switch.go
Go runs on Darwin.
 
shell
$ go run switch.go
Go runs on Darwin.
 

이는 코드가 실행된 환경이 macOS (Darwin)이기 때문에 "OS X."가 출력된 것입니다. 다른 운영체제에서 실행한다면 해당 운영체제에 맞는 메시지가 출력될 거예요.

이처럼 switch 문은 조건에 따른 분기 처리를 간결하고 가독성 있게 표현할 수 있는 강력한 도구랍니다.

YouTube 영상

채널 보기
Const 펑터 - 아무것도 안 하는 펑터가 필요한 이유 | 프로그래머를 위한 카테고리 이론
Product와 Coproduct가 Bifunctor인 이유 | 프로그래머를 위한 카테고리 이론
펑터 타입 클래스 | 프로그래머를 위한 카테고리 이론
리더 펑터 - 함수도 펑터다! | 프로그래머를 위한 카테고리 이론
펑터란? | 프로그래머를 위한 카테고리 이론
NestJS 파이프가 뭔가요? 컨트롤러를 보호하는 방법 | NestJS 가이드
펑터 합성 | 프로그래머를 위한 카테고리 이론
NestJS 필터 바인딩 - Method, Controller, Global Scope 비교 | NestJS 가이드