『Tucker의 Go 언어 프로그래밍』 스터디 요약 노트 : 9강 if문
2021. 5. 24. 00:10ㆍ개발/Golang
728x90
반응형
프로그래밍에서 if문 잘써도 왠만한 코딩이 가능하다고한다. 이번에는 if문을 공부해보고 요약해보고자 한다.
1. if문 기본 사용법
if 조건문 {
문장
} else if 조건문 {
문장
} else {
문장
}
- 만족하는 조건문의 {} 안에 문장을 실행합니다. 만족하는 조건문이 없음면 else 구문 {}안에 있는 문장을 실행합니다.
- else if와 else 구문은 생략이 가능합니다.
else문 예제
package main
import "fmt"
func main() {
light := "red"
if light == "green" {
fmt.Println("길을 건넌다")
} else {
fmt.Println("대기한다")
}
}

else if문 예제
package main
import "fmt"
func main() {
temp := 33
if temp > 28 {
fmt.Println("에어컨을 킨다.")
} else if temp <= 3 {
fmt.Println("히터를 킨다.")
} else {
fmt.Println("대기한다.")
}
}

2. &&, ||
- && 와 || 는 논리 연산자입니다. &&는 AND를 의미하고 '그리고'로 해석하며, ||는 OR을 의미하고 '또는'으로 해석
- &&는 양쪽이 True인경우에만 True가되고 ||은 둘중 하나만 True여도 True가 됩니다.
package main
import "fmt"
func main() {
var age = 22
if age >= 10 && age <=15 {
// age가 10이상 15이하인 경우
fmt.Println("you are young")
} else if age > 30 || age < 20 {
// age가 30보다 크커간 20보다 작은경우, 즉 20대가 아닌경우
fmt.Println("you are not 20s")
} else {
fmt.Println("Best age of your life")
}
}

- age가 22므로 else if에 만족해 "Best age of your life"를 출력했습니다.
2-1. 쇼트서킷
- && 연산은 좌변이 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 증가")
}
fmt.Println("cnt:",cnt)
}

- &&좌변이 false이기 때문에 IncreaseAndReturn() 함수를 호출하지않고 조건문의 결과가 false가 됩니다. 그래서 "1증가"는 출력되지 않습니다.
- || 좌변이 true이기 때문에 IncreaseAndReturn() 함수를 호출 하지않고 결과가 true가 됩니다. 그래서 "2 증가" 메세지가 출력됩니다. IncreaseAndReturn() 함수는 한번도 호출되지 않았기 때문에 cnt의 값은 0이 됩니다.
2-2. 소괄호 ( ) 활용
소괄호 활용을하면 더욱 다양한 조건문 활용이 가능합니다.
// 예약을 했거나, 가진 돈이 200이 넘고 빈자리가 있으면 통과
if hasBooked() || (Money>200 && HasEmptySeat())
- haseBooked() 함수가 true 조건이나오면 true가 나오고, HasBooked()가 false여도 우항이 true일 경우 true가 됩니다.
3. 중첩if
if문 안에 if문을 중첩해 사용할 수도 있습니다. 복잡한 경우를 표현할 때 사용합니다.
package main
import "fmt"
// 부자가 있는 친구는 무조건 true 반환
func HasRichFriend() bool {
return true
}
// 같이 간 친구 숫자를 반환 - 무조건 숫자 3을 반환
func GetFriendsCount() int {
return 3
}
func main() {
Price := 35000
if Price > 50000 {
if HasRichFriend() {
fmt.Println(" 앗 신발끈이 풀렸네 " )
} else {
fmt.Println("나눠내자")
}
} else if Price >= 30000 && Price <= 50000 {
if GetFriendsCount() > 3 {
fmt.Println(" 어이쿠 신발끈이.. " )
} else {
fmt.Println(" 사람도 얼마 없는데 나눠 내자")
}
} else {
fmt.Println("오늘은 내가 쏜다")
}
}

- 값은 35000원이기에 첫번째 if문 50000원 이상은 false이므로 실행하지않고 다음조건문을 검사합니다.
- 2번째 else if Price의 가격은 35000원이 만족하기 때문에 검사를합니다ㅣ.
- 안쪽의 if문을 보면 GetFriendsCount() 값은 3을 반환하기 때문에 "사람도 얼마 없는데 나눠 내자"를 반환합니다.
4. if 초기문; 조건문
- if문을 검사하기 전에 초기문을 넣을 수 있습니다.
- 초기문은 검사에 사용할 변수를 초기화할때 주로 사용합니다.
if 초기문; 조건문 {
문장
}
초기문 자리에 하나의 구문이 올 수 있으며 끝에 ;를 붙여서 구문이 끝남을 표시합니다. 그리고 조건문을 넣습니다.
package main
import "fmt"
func getMyAge() (int, bool) {
return 33,true
}
func main() {
if age, ok := getMyAge() ; ok && age < 20 {
fmt.Println("you are young",age)
} else if ok && age < 30 {
fmt.Println("Nice age",age)
} else if ok {
fmt.Println("you are beatiful",age)
} else {
fmt.Println("error")
}
fmt.Println("Your age is",age)
}

- 초기문에 선언한 변수는 if문 안에서만 한정되기 때문에 종료된 fmt.Println("Your age is",age)에는 접근 할수없기에 오류가 발생합니다.
- fmt.Println("Your age is",age)가 없다면 정확한 값이 나옵니다.
728x90
반응형
'개발 > Golang' 카테고리의 다른 글
| 『Tucker의 Go 언어 프로그래밍』 스터디 요약 노트 : 11강 for문 (0) | 2021.05.27 |
|---|---|
| 『Tucker의 Go 언어 프로그래밍』 스터디 요약 노트 : 10강 switch문 (0) | 2021.05.26 |
| 『Tucker의 Go 언어 프로그래밍』 스터디 요약 노트 : 8강 상수 (0) | 2021.05.23 |
| 『Tucker의 Go 언어 프로그래밍』 스터디 요약 노트 : 7강 함수 (0) | 2021.05.22 |
| 『Tucker의 Go 언어 프로그래밍』 스터디 요약 노트 : 6강 연산자 (2) (0) | 2021.05.21 |