Go OOP 입문
Coddy GO 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 107개 중 5번째.
Go에는 클래스가 없지만, structs와 methods를 통해 객체 지향 프로그래밍을 구현합니다. 구조체(struct)는 관련된 데이터를 그룹화하고, 메서드(method)는 해당 구조체에 연결된 동작을 정의합니다.
데이터를 저장할 구조체(struct)를 정의합니다
type Dog struct {
Name string
Age int
}구조체에 메서드를 연결합니다
func (d Dog) Bark() string {
return d.Name + " says Woof!"
}인스턴스를 생성하고 사용하기
package main
import "fmt"
type Dog struct {
Name string
Age int
}
func (d Dog) Bark() string {
return d.Name + " says Woof!"
}
func main() {
myDog := Dog{Name: "Buddy", Age: 3}
fmt.Println(myDog.Bark()) // 출력: Buddy says Woof!
fmt.Println(myDog.Age) // 출력: 3
}Go에서 메서드 이름 앞의 (d Dog) 부분은 리시버(receiver)라고 불립니다. 이것은 메서드를 Dog 구조체와 연결하며, 다른 언어에서 메서드가 클래스에 속하는 방식과 유사합니다.
챌린지
쉬움Go의 OOP 접근 방식을 연습하기 위해 Cat 구조체와 메서드를 생성하세요:
Name(string)과Age(int) 필드를 가진Cat구조체를 정의하세요- 고양이의 이름 뒤에
" says Meow!"가 붙은 문자열을 반환하는Speak메서드를 추가하세요
치트 시트
Go는 구조체(structs)와 메서드(methods)를 통해 객체 지향 프로그래밍을 구현합니다. 구조체는 관련된 데이터를 그룹화하고, 메서드는 해당 구조체에 연결된 동작을 정의합니다.
데이터를 보유할 구조체를 정의합니다:
type Dog struct {
Name string
Age int
}리시버(receiver)를 사용하여 구조체에 메서드를 연결합니다:
func (d Dog) Bark() string {
return d.Name + " says Woof!"
}메서드 이름 앞의 (d Dog) 부분은 리시버이며, 메서드를 구조체에 연결합니다.
인스턴스를 생성하고 사용합니다:
myDog := Dog{Name: "Buddy", Age: 3}
fmt.Println(myDog.Bark()) // 출력: Buddy says Woof!
fmt.Println(myDog.Age) // 출력: 3직접 해보기
package main
import "fmt"
func main() {
var name string
var age int
fmt.Scan(&name, &age)
cat := Cat{Name: name, Age: age}
fmt.Printf("Name: %s\n", cat.Name)
fmt.Printf("Age: %d\n", cat.Age)
fmt.Println(cat.Speak())
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
객체 지향 프로그래밍의 모든 레슨
8에러 처리와 OOP
error 인터페이스사용자 정의 에러 타입에러 래핑 (fmt.Errorf)센티넬 에러errors.Is()와 errors.As()Panic, Defer, Recover요약 - 파일 파서