요약 - 도형 계산기
Coddy GO 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 107개 중 33번째.
챌린지
쉬움이 장에서 배운 모든 인터페이스 개념을 통합하는 도형 계산기를 만들어 보겠습니다. 서로 다른 기하학적 도형을 공통 인터페이스를 통해 일관되게 처리하는 시스템을 구축하여 Go 언어의 다형성이 가진 강력함을 경험해 보게 될 것입니다.
코드는 다음 세 개의 파일로 구성됩니다:
shape.go:Area() float64와Perimeter() float64라는 두 개의 메서드를 가진Shape인터페이스를 정의합니다. 또한 임의의Shape를 인자로 받아 면적과 둘레를 모두 보여주는 형식화된 문자열을 반환하는DescribeShape함수를 만듭니다.shapes.go:Shape인터페이스를 구현하는 두 개의 구조체를 만듭니다:Width와Height필드를 가진RectangleRadius필드를 가진Circle
Area()와Perimeter()메서드를 모두 구현해야 하며, 도형에 대한 읽기 쉬운 설명을 반환하는String()메서드(fmt.Stringer인터페이스 구현)도 추가해야 합니다.main.go: 입력으로부터 도형 데이터를 읽고, 적절한 도형을 생성한 후,DescribeShape함수를 사용하여 각 도형의 정보를 표시합니다. 또한Stringer인터페이스를 확인하기 위해 각 도형을 직접 출력합니다.
다음과 같은 입력이 제공됩니다:
- 1행: 사각형의 너비 (float)
- 2행: 사각형의 높이 (float)
- 3행: 원의 반지름 (float)
계산 시 pi 값으로 3.14159를 사용하세요. 원의 둘레는 2 * pi * radius입니다.
String() 메서드는 다음을 반환해야 합니다:
- Rectangle:
"Rectangle(%.2f x %.2f)" - Circle:
"Circle(Radius: %.2f)"
DescribeShape 함수는 다음을 반환해야 합니다:
Area: %.2f, Perimeter: %.2f모든 float 값은 %.2f를 사용하여 소수점 둘째 자리까지 표시하세요.
예를 들어, 4, 3, 5가 입력되면 출력은 다음과 같아야 합니다:
Rectangle(4.00 x 3.00)
Area: 12.00, Perimeter: 14.00
Circle(Radius: 5.00)
Area: 78.54, Perimeter: 31.42각 도형을 먼저 출력(String() 메서드 사용)한 다음, DescribeShape의 설명을 출력하세요. 사각형을 먼저 처리하고 그 다음에 원을 처리합니다.
직접 해보기
package main
import (
"fmt"
)
func main() {
// 입력 값 읽기
var width, height, radius float64
fmt.Scanln(&width)
fmt.Scanln(&height)
fmt.Scanln(&radius)
// TODO: 주어진 너비와 높이로 Rectangle 생성
// TODO: 주어진 반지름으로 Circle 생성
// TODO: 사각형 출력 (String() 메서드 사용)
// TODO: DescribeShape()를 사용하여 사각형의 설명 출력
// TODO: 원 출력 (String() 메서드 사용)
// TODO: DescribeShape()를 사용하여 원의 설명 출력
}
객체 지향 프로그래밍의 모든 레슨
8에러 처리와 OOP
error 인터페이스사용자 정의 에러 타입에러 래핑 (fmt.Errorf)센티넬 에러errors.Is()와 errors.As()Panic, Defer, Recover요약 - 파일 파서