본문 바로가기
  • GDG on campus Ewha Tech Blog
3-1기 스터디/Golang

[3주차] Go언어의 if, switch, for

by eoeos 2021. 11. 11.

 

Golang 3주차 스터디

이제부터 Golang만의 특성이 하나둘씩 나타나고 있어서 재미있어지기 시작했습니다! :) 그럼 시작해 볼까요?

09. IF

쇼트서킷

  • 쇼트서킷(short-circuit)
    • && 연산은 좌변이 false이면 우변을 검사하지 않고 false 처리
    • || 연산 또한 좌변이 true이면 우변을 검사하지 않고 true 처리
    • 조건문 우변이 실행되지 않을 수 있으므로 염두에 두고 코드를 구현해야 합니다!
package main

import "fmt"

var cnt int = 0

func IncreaseAndReturn() int {
    fmt.Println("IncreaseAndReturn()", cnt)
    cnt++
    return cnt
}

func main() {
    if false && IncreaseAndReturn() < 5 {
        fmt.Println("1 증가")
    }
    if true || IncreaseAndReturn() < 5 {
        fmt.Println("2 증가")
    }

위 코드에서는 func main() 속의 IncreaseAndReturn() 함수가 쇼트서킷 때문에 수행되지 않습니다. :(

 

if 초기문; 조건문

  • if 조건을 검사하기 초기문을 넣을 수 있다.
  • 초기문은 검사에 사용할 변수를 초기화할 때 주로 사용한다.
if 초기문; 조건문 {
    문장
}

초기문 자리에 하나의 구문이 올 수 있고, 끝에 ;을 붙여 끝났음을 표시

  • 먼저 UploadFile() 함수 실행, filename과 success에 변수 반환값을 저장
  • 함수 성공 여부에 따라 다른 메시지 출력

초기문에서 선언한 변수의 범위는 if문 으로 한정!

 

 

10. switch

switch문 동작 원리

  • switch 키워드 다음 비굣값 옴
  • 첫 번째 case부터 값을 검사
    • 만약 비굣값 == case값이면 case 문장 수행 후 switch문 종료
  • 같은 값이 없으면 deafult문 시행
    • default는 생략 가능
switch 비굣값 {
case 값1:
	문장
case 값2:
	문장
default:
	문장
}

 

switch문을 이용하는 이유?

복잡한 if else문을 보기 좋게 정리 가능

 

다양한 switch문 형태!

1. 한 번에 여러 값 비교

하나의 case는 하나 이상의 값을 비교할 수 있다. 각 값은 쉼표로 구분한다.

2. 조건문 비교

  • true가 되는 조건문을 검사할 수 있다.

switch문은 비굣값과 case의 값이 같아지는 경우를 찾는 구문이므로 비굣값을 true로 할 경우 case의 조건문이 true가 되는 경우에 실행! 

switch 다음에 비굣값을 적지 않는 경우 default 값으로 true를 이용함. true 생략 가능!

 

switch 초기문

if문처럼 switch문도 초기문을 넣을 수 있음!

 

break와 fallthrough 키워드

  • Go 언어: break를 사용하지 않아도 case 하나 시행 후 자동으로 switch문 빠져나감
    • 다른 언어는 case 종료 시에 break문 사용해야 함
  • 하나의 case 문 시행 후 다음 case문까지 같이 실행하고 싶을 때: fallthrough 키워드 이용
    • 키워드 이용하면 다음 case까지 실행

 

 

11. for

Go의 For문

  • Go에서 지원하는 유일한 반복문!
  • 초기문 생략, 후처리 생략, 조건문만 있는 경우 세 가지가 가능

 

무한 루프

  • 조건문이 true이면 코드 블록이 무한 반복되는 무한 루프가 됨!

그리고 switch문에서처럼 조건문에서 true 생략 가능! 프로그램이 종료되거나 break를 사용해 종료하지 않으면 계속 반복됨

 

if문에서 빠져나오기

1. break: break가 속한 for문에서만 빠져나옴

2. Boolean 변수 이용

3. 레이블 이용

 

 

 

댓글