[GoLang 기초] 조건문과 반복문

타미·2021년 1월 20일
1

Hello Golang

목록 보기
2/7
post-thumbnail

조건문

if k == 1 {  // 같은 라인
	println("One")
}
  • 조건문과 같은 라인에서 괄호를 열어준다.
if k < 0
{ // 에러 발생
	println("Hello, playground")
}

  • 다른 라인에 쓰면 에러난다. else if else도 마찬가지
  • () 안 써도 된다. (써도 되긴 하는데, go에서 추구하는게 () 없는 것 같다!)
  • 조건은 boolean 식으로. 0,1 사용 불가 (↔ C++에서는 가능한 것과는 다름)
if val := i * 2; val < max {
	println(val)
} else if val > min {  // else if, else 블럭까지 변수 사용 可
	println(val)
}
val++ // Scope 벗어나 에러

블럭 안에서 선언한 변수는 해당 블럭에서만 사용 가능


switch

expression 사용하는 경우

switch category {
    case 1:
        name = "Paper Book"
	// break -- Go 컴파일러가 각 case에 자동으로 break를 달아준다.
    case 2:
        name = "eBook"
    case 3, 4:
        name = "Blog"
    default:
        name = "Other"
}

expression 없이도 사용 可

switch {
    case score >= 90:
        println("A")
    case score >= 80:
        println("B")
    case score >= 70:
        println("C")
    case score >= 60:
        println("D")
    default:
        println("No Hope")
    }

type을 확인하는 switch

switch v.(type) { // 변수 v의 타입 체크
	case int:
		println("int")
	case bool:
		println("bool")
	case string:
		println("string")
	default:
		println("unknown")
}

v.(type) 이거는 별도로 있는 문법이 아니라 switch에서만 사용하는 것!
변수의 타입 체크를 해주는 switch문을 제공한다고 이해하면 된다.

fallthrough

func main() {
    check(2)
    // 출력: 2 3 default
}
 
func check(val int) {
    switch val {
    case 1:
        fmt.Println("1")
        fallthrough
    case 2:
        fmt.Println("2")
        fallthrough
    case 3:
        fmt.Println("3")
        fallthrough
    default:
        fmt.Println("default")
    }
}

fallthrough : 다음 case문 실행

다음 case가 조건이 맞는 것이 아니더라도 무조건 실행한다~


for

기본적인 형태

for i := 1; i <= 100; i++ {
    sum += i
}
  • for () 쓰면 에러난다.

while

for n < 100 {
	n *= 2   
}
  • while 대신 for 문을 사용한다.

무한루프

for {
	println("Infinite loop")        
}

for range

names := []string{"홍길동", "이순신", "강감찬"}
 
for index, name := range names {
    println(index, name)
}
  • for 인덱스,요소값 := range 컬렉션
  • for each와 비슷한 문법

break, continue, goto

package main

func main() {
    var a = 1
    for a < 15 {
        if a == 5 {
            a += a
            continue // for루프 시작으로
        }
        a++
        if a > 10 {
            break  //루프 빠져나옴
        }
    }
    if a == 11 {
        goto END //goto 사용예
    }
    println(a)
 
END:
    println("End")
}
  • 기억할 만한 것은 goto!
    • 특정 지점으로 이동시킨다.
    • 이런 문법은 지양한다고 알고 있는데 왜 굳이 go에서 만들었을까! 🤔

for 레이블

Loop:
	// 요 사이에 코드 들어가면 안된다.
	for a := 0; a < 3; a++ { 
		for b := 0; b < 3; b++ { 
			if b == 2 {       
				**break Loop**
			}
			fmt.Println(i, j)
		}
	}
0 0
0 1
  • break가 걸리면 Loop 레이블로 이동후 for문을 빠져나온다.
  • 중첩된 for문을 break할 때 유용하다.
  • 그냥 break하면 가장 가까운 for문을 빠져 나온다.
profile
IT's 호기심 천국

1개의 댓글

comment-user-thumbnail
2021년 1월 21일

👍

답글 달기