📘 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의 인터페이스는 느슨하지만 강력한 다형성을 가능하게 한다!"