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. 레이블 이용
'3-1기 스터디 > Golang' 카테고리의 다른 글
[6주차] 숫자 맞추기 게임 만들기, Go 언어의 슬라이스 (0) | 2021.12.01 |
---|---|
[5주차] Chapter 15~16. 문자열, 패키지 (0) | 2021.11.30 |
[4주차] Go 언어의 배열, 구조체, 포인터 (0) | 2021.11.22 |
[2주차] Go 언어의 연산자, 함수, 상수 (0) | 2021.11.03 |
[1주차] Go 언어 입문하기 (개념, 변수, 표준입출력, 설치 방법) (0) | 2021.10.13 |
댓글