백구의 코딩찌개
  • [GO] GO 기초 문법 - 조건문
    2024년 01월 22일 22시 32분 01초에 업로드 된 글입니다.
    작성자: 코딩백구
    반응형

    다른 언어에서와 마찬가지로 기본적으로 if / else if / else 와 switch~case 문이 존재한다.

    if 문

    • Go 에서의 if 문은 파이썬처럼 소괄호가 없이 사용한다.
    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	if true {
    		fmt.Println("Hello, Go!")
    	} else if true {
    		fmt.Println("Who are you?")
    	} else {
    		fmt.Println("Goodbye")
    	}
    }
    • 위 코드처럼 일반적으로 사용할 수도 있으며, 아래 코드처럼 조건절에서 변수를 바로 선언할 수도 있다.
    • 이때, 조건문에서 response, err 변수를 우측 함수로부터 받고, 바로 조건을 검사한다.
    package main
    
    import (
    	"fmt"
    	"net/http"
    )
    
    func main() {
    	if response, err := http.Get("http://localhost:4000"); err == nil {
    		fmt.Println(response.StatusCode)
    		// 200
    	}
    }
    • Http Get 요청을 하고, 에러없이 정상적으로 받았다면 Http 상태코드를 출력하는 예제이다.
    • 세미콜론을 구분자로 하여 err 변수에 대한 비교연산을 하여 조건을 검사한다.

    switch-case 문

    • 조건문과 마찬가지로 조건에 따라 행동한다.
    • Go 언어의 switch-case 는 기본적인 사용법은 같지만 다른 부분이 다소 있다.

    1. break 문이 필요 없다.

    package main
    
    import (
    	"fmt"
    	"net/http"
    )
    
    func main() {
    	response, _ := http.Get("http://localhost:4000")
    	// http.Get 은 return 값이 두개이다.
    	switch response.StatusCode {
    	case 200:
    		fmt.Println("Successful")
    	case 404:
    		fmt.Println("Not Found")
    	default:
    		fmt.Println("Nothing")
    	}
    }
    // Successful 만 실행

    2. 새로운 키워드인 fallthrough 를 사용한다.

    • fallthrough 를 써야 다음으로 넘어갈 수 있으며, 그렇지 않으면 해당 케이스에 부합하는것만 실행하고 멈춘다.

    3. 조건을 사용하지 않고 switch-case 문을 사용할 수 있다.

    package main
    
    import (
    	"fmt"
    	"time"
    )
    
    func main() {
    	t := time.Now()
    
    	switch {
    	case t.Hour() < 12:
    		fmt.Print("Good Morning")
    	case t.Hour() < 17:
    		fmt.Println("Good Afternoon")
    	default:
    		fmt.Println("Good evening")
    	}
    }
    // 정상적으로 실행

    4. if 문  처럼 조건절에서 변수 선언이 가능하다.

    package main
    
    import (
    	"fmt"
    	"net/http"
    )
    
    func main() {
    
    	switch response, _ := http.Get("http://localhost:4000"); response.StatusCode {
    	case 200:
    		fmt.Println("Successful")
    	case 404:
    		fmt.Println("Not Found")
    	default:
    		fmt.Println("Nothing")
    	}
    }
    // Successful 만 실행
    반응형

    'Language > Go' 카테고리의 다른 글

    [GO] Go 기초 문법 - 변수 선언 및 자료형  (1) 2023.12.30
    [GO] Go 란 무엇일까?  (0) 2023.12.28
    댓글