Golang 조건문과 반복문 - Go series(4)

Date:     Updated:

Categories:

Tags: ,

image

조건문

  • if문

    • 다른언어와 다른점
      • 조건 블럭 시작 ({) 을 if문과 같은 라인에 두어야 함.
      • 조건식은 반드시 Boolean 식이어야 함( 0, 1등 숫자 X)
    • 예시
      if a == 1{
          println("1")
      } else if a == 2{
          println("2")
      } else {
          println("X")
      }
      
    • 조건식을 사용하기 전에 간단한 문장을 같이 실행할 수 있다. 주의할 점은 이 때 정의된 변수는 if문 블럭 혹은 if-else문의 블럭 안에서만 사용할 수 있다는 것이다. switch, for, 등에서도 적용이 된다.

      • 예시)

        if temp := 2; temp < a{
            println(temp)
        }
        
        println(temp) // 이 문장은 에러를 뱉는다. (if문 밖)
        
  • switch문

    • 다른언어와 다른 점

      • switch 뒤에 변수나 expression이 없을 수 있다. 이 경우 무조건 true라 생각하고 첫 번째 case를 검사하게 된다.

        • 예를 들어 학점을 반환하는 case를 만든다고 하자.
          func getGrade(score int){
              switch {
                  case score >= 90:
                      println("A")
                  case score >= 80:
                      println("B")
                  case score >= 70:
                      println("C")
                  default:
                      println("재수강")
              }
          }
          
        • 또 다른 예시로 타입을 검사하는 switch도 만들 수 있다.
          switch v.(type){
          case int:
              println("int")
          case bool:
              println("bool")
          case string:
              println("string")
          default:
              println("안농")
          }
          
      • case 문에 expression을 쓸 수 있다.(다른 언어는 일반적으로 리터럴 값을 가진다)

      • break문을 쓰지 않아도 다음 case로 가지 않는다.
      • 변수의 TYPE에 따라서 case로 분기할 수 있다.

반복문

  • for문

    • 반복문은 for 하나밖에 없다.

      package main
      
      func main(){
          var sum int
          for i:=1; i <=10; i++ {
              sum += i
          }
      }
      
    • 초기값과 증감식을 생략하고 쓸 수 있는데, while처럼 쓰는것을 의미한다.
      func main(){
          var n int
          for n<100{
              n += 1
          }
      }
      
    • for range

      • foreach와 비슷하다. 아래 예시는 python의 in enumerate와 비슷하다.
      func main(){
          names := []string{"허원량","허투량","허쓰리량"}
          for index,name := range names{
              println(index,name)
          }
      }
      
    • break, continue, goto
      • break와 continue, goto 또한 다른언어처럼 비슷하게 사용한다. 하지만 경우에 따라 break 레이블을 사용할 수 있는데, 현재 루프를 빠져나와 지정된 레이블에 대한 문장을 실행시킨다.
        func main(){
          var a int
        PRINT:
          for i:=0; i<9; i++{
              a += i
              if a==6{
                  break PRINT
              }
          }
          println("PRINT 6")
        }
        

Leave a comment