🔥 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 문의 사용법을 자세히 살펴보겠습니다.

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

위 코드에서는 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 문을 반복적으로 사용하는 것을 피할 수 있게 되죠.

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

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

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

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