Go 언어 11강 - 인터페이스(interface)

 

📘 Go 언어 11강 - 인터페이스(interface)

인터페이스는 Go에서 다형성(polymorphism)을 구현하는 핵심 도구입니다.
자바와 달리 명시적인 구현 선언 없이, 자동으로 인터페이스를 만족합니다.

1️⃣ 인터페이스 선언

type Speaker interface {
    Speak()
}

함수 시그니처만 선언합니다. 이 인터페이스를 만족하려면 해당 함수를 구현하면 됩니다.

2️⃣ 구조체가 인터페이스를 만족하는 경우

type Dog struct{}
func (d Dog) Speak() {
    fmt.Println("멍멍!")
}

Dog는 명시적으로 아무것도 하지 않아도 Speaker를 구현한 셈입니다.

3️⃣ 인터페이스를 사용하는 함수

func makeSound(s Speaker) {
    s.Speak()
}

💡 예제 1: 다양한 구조체의 공통 인터페이스

type Cat struct{}
func (c Cat) Speak() {
    fmt.Println("야옹~")
}

func main() {
    var s Speaker

    s = Dog{}
    s.Speak() // 멍멍!

    s = Cat{}
    s.Speak() // 야옹~
}

💡 예제 2: 인터페이스 슬라이스 활용

animals := []Speaker{Dog{}, Cat{}}

for _, a := range animals {
    a.Speak()
}

🧠 요약

  • interface는 함수 시그니처만 정의
  • 구조체는 해당 메서드를 정의하면 자동으로 인터페이스 구현됨
  • 인터페이스를 통해 다양한 타입을 공통 방식으로 처리 가능

한 줄 요약: "Go의 인터페이스는 느슨하지만 강력한 다형성을 가능하게 한다!"