[Go(Golang)] 반복문(for), 조건문(if, switch)

지니·2021년 3월 26일
0

Golang

목록 보기
3/3
post-thumbnail

반복문

for문

  • 세미콜론(;)을 기준으로 세 부분으로 나뉨
    • 각 부분은 생략 가능
  • 괄호 ( ) 는 쓰지 않음
  • 중괄호 { } 는 필수!!!
func main() {
  sum := 0
  
  for i int = 1; i < 10; i++ {
    sum += i
  }
}

// 무한루프
for { ... }

while문

  • go에는 while문 없음
  • while문 흉내내기 : for 조건 { }
// for문을 while문 처럼 쓰기
count := 10

for count >= 0 { ... }



조건문

if문

  • 괄호 ( ) 는 쓰지 않음

  • 중괄호 { } 는 필수!!!

  • if 문 사용법

    • if 조건문 { } : 일반적인 방법. 바로 조건문 검사
    • if statement; 조건문 { } : 조건문 검사하기 전 statement 실행
      • for 문의 첫번째 부분인 초기값 설정과 같은 역할
      • statement에서 선언한 변수는 if문 안에서만 사용 가능
// 일반적인 방법
if x == 0 {
  x += 10
}

// statement 
if bonus := 10; x == 0 {
  x += bonus
}

if - else 문

  • else문은 if문의 중괄호가 끝나는 부분에( } ) 선언해줘야 함

    • 가능
    if x < 0 {
      x += 1
    } else {
      x -= 1
    }
    • 불가능
    if x < 0 {
      x += 1
    }
    else {
      x -= 1
    }

switch 문

  • switch문 사용법

    var grade string
    
    // 1. 일반적인 방법
    switch score {
    	case 100:
    		grade = "A"
    	case 90:
    		grade = "B"
      // case 문에 여러개 할당 가능 : 콤마(,)로 값 구문
    	case 80, 70:
    		grade = "C"
    	case 50, 70:
    		grade = "D"
    	default:
    		grade = "F"
    }
    
    // 2. switch 문에 표현식 작성 가능
    switch newScore := score / 10; newScore {
      case 10:
    		grade = "A"
    	case 9:
    		grade = "B"
    	case 8, 7:
    		grade = "C"
    	case 5, 7:
    		grade = "D"
    	default:
    		grade = "F"
    }
    
    // 3. swicth 문에 변수나 표현식 생략
    switch {
      case score == 100:
    		grade = "A"
    	case score >= 90:
    		grade = "B"
      // 판별한 변수가 아닌 조건식으로 분기 가능
    	case 70 < score && score <= 80:
    		grade = "C"
    	case 50 < score && score <= 70:
    		grade = "D"
    	default:
    		grade = "F"
    }
    
    // 4. case 문에 표현식 작성
    switch score {
      case 10:
    		grade = "A"
    	case 9:
    		grade = "B"
    	case 8, 7:
    		grade = "C"
    	case 5, 7:
    		grade = "D"
    	default:
    		grade = "F"
    }
  • 위에서부터 차례대로 case 검사

  • case 값은 문자, 숫자, 조건식 모두 가능

  • 하나의 케이스에 여러개 조건 할당할 수 있음

  • 해당되는 case가 있으면 break 하지 않아도 자동으로 case 종료

    • case 종료하고 싶지 않으면 case 마지막에 fallthrough 추가
import {
  "fmt"
}

func get_grade(score int) string {
  switch {
    case score > 90:
        grade = "A"
    case score > 70:
        grade = "B"
        fallthrough
    case score > 50:
        grade = "C"
        fallthrough
    default:
        grade = "F"
    }
  return grade
}

func main() {
  fmt.Println(get_grade(100))	// 출력 : A
  fmt.Println(get_grade(80))	// 출력 : F 
  // -> 두번째 case에 해당되지만 fallthrough가 있기 때문에 다음 case로 넘어감 ~ 마지막 default에서 걸림
}
profile
코.빠.죄.아 (코딩에 빠진 게 죄는 아니잖아..!)

0개의 댓글