Go에서는 다음과 같은 관계 연산자와 동등 연산자로 숫자를 비교할 수 있어요.
| 비교 | 연산자 |
|---|---|
| 같음 | == |
| 같지 않음 | != |
| 작음 | < |
| 작거나 같음 | <= |
| 큼 | > |
| 크거나 같음 | >= |
비교 결과는 항상 불리언 값이에요. 즉 true 또는 false 중 하나예요.
a := 3
a != 4 // true
a > 5 // false
위의 비교 연산자는 문자열을 비교할 때도 사용할 수 있어요. 이때는 사전 순서가 적용돼요. 예를 들어 볼까요?
"apple" < "banana" // true
"apple" > "banana" // false
if문Go의 조건문은 다른 언어의 조건문과 비슷해요.
모든 조건 연산의 기반이 되는 타입은 bool 타입이고, 이 타입은 true 또는 false 값을 가질 수 있어요.
조건문은 여러 조건을 확인하는 흐름 제어 수단으로 자주 쓰여요.
특정한 경우를 확인할 때는 if문을 사용할 수 있어요. 아래처럼 조건이 true이면 if문이 코드를 실행해요.
var value string
if value == "val" {
return "was val"
}
확인할 경우가 여러 개인 상황에서는 else if문과 else문을 사용해 여러 if문을 이어 붙일 수 있어요.
var number int
result := "This number is "
if number > 0 {
result += "positive"
} else if number < 0 {
result += "negative"
} else {
result += "zero"
}
if문에는 짧은 초기화 문을 함께 넣을 수도 있어요. 이 문으로 if문에서 사용할 변수를 하나 이상 초기화할 수 있어요.
예를 들어 볼까요?
num := 7
if v := 2 * num; v > 10 {
fmt.Println(v)
} else {
fmt.Println(num)
}
// Output: 14
참고: 초기화 문에서 만든 변수는 if문이 끝난 뒤에는 스코프를 벗어나요.
이 연습 문제에서는 차량 구매를 준비하는 데 도움이 되는 코드를 작성해요.
세 가지 작업이 있어요. 하나는 면허가 필요한지 확인하는 것, 하나는 두 차량 중에서 고르는 것을 돕는 것, 그리고 하나는 중고 차량의 적정 가격을 추정하는 것이에요.
어떤 종류의 차량은 운전하려면 운전면허가 필요해요.
"car"와 "truck" 종류만 면허가 필요하고, 나머지는 모두 면허 없이 운전할 수 있다고 가정해요.
차량의 종류를 받아서 그 종류의 차량에 면허가 필요한지를 나타내는 불리언을 반환하는 NeedsLicense(kind) 함수를 구현해요.
needLicense := NeedsLicense("car")
// => true
needLicense = NeedsLicense("bike")
// => false
needLicense = NeedsLicense("truck")
// => true
구매할 수 있는 차량들을 살펴봐요.
두 가지 선택지로 좁혔지만 최종 결정을 내리는 데 도움이 필요해요.
이를 위해 두 차량을 인자로 받아 사전순으로 앞서는 선택지를 포함한 결정을 반환하는 ChooseVehicle(option1, option2) 함수를 구현해요.
vehicle := ChooseVehicle("Wuling Hongguang", "Toyota Corolla")
// => "Toyota Corolla is clearly the better choice."
ChooseVehicle("Volkswagen Beetle", "Volkswagen Golf")
// => "Volkswagen Beetle is clearly the better choice."
이제 결정을 내렸으니, 판매점에서 공정한 가격에 사는지 확인하고 싶어요. 중고 차량 구매에 관심이 있으니, 가격은 차량의 연식에 따라 달라져요. 대략적으로 추정해 보면, 차량이 3년 미만이면 새 차였을 때의 원래 가격에서 80%가 돼요. 10년 이상이면 50%가 돼요. 차량이 3년 이상 10년 미만이면 원래 가격의 70%가 돼요.
if, else if, else를 사용해서 이 로직을 적용하는 CalculateResellPrice(originalPrice, age) 함수를 구현해요. 연습하고 싶다면 다른 방법도 있어요.
이 함수는 원래 가격과 차량의 연식을 인자로 받아 판매점에서의 예상 가격을 반환해요.
CalculateResellPrice(1000, 1)
// => 800
CalculateResellPrice(1000, 5)
// => 700
CalculateResellPrice(1000, 15)
// => 500
참고 반환 값은 float64예요.
Exercism에 가입하고 Go 트랙을 개념 34개연습 문제 165개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.