728x90

구조체

여러 필드를 하나로 묶어 새로운 타입을 정의할 수 있는 방법 (ex: 개 > 이름, 나이, ...)

메서드

특정 타입에 속한 함수 (개 > 짖기, ...)

메서드를 정의하면 해당 타입의 인스턴스에서 호출할 수 있음

인터페이스

메서드 시그니처의 집합으로, 어떤 타입이 특정 인터페이스를 구현하려면 그 인터페이스에 정의된 모든 메서드를 구현해야 함

(인터페이스 : 동물 > 짖기 => 구조체 : 강아지 > 짖기, 고양이 > 짖기)

예시

package main

import "fmt"

// 인터페이스 정의
type Animal interface {
    Speak() string
}

// Dog 구조체 정의
type Dog struct {
    Name string
    Age int
}

// Dog에 Speak 메서드 구현
func (d Dog) Speak() string {
    return "Woof!"
}

// Cat 구조체 정의
type Cat struct {
    Name string
}

// Cat에 Speak 메서드 구현
func (c Cat) Speak() string {
    return "Meow!"
}

func main() {
    // Animal 인터페이스 타입의 슬라이스 생성
    animals := []Animal{
        Dog{Name: "Rex", Age: 5},
        Cat{Name: "Whiskers"},
    }

    // 각 동물의 Speak 메서드 호출
    for _, animal := range animals {
        fmt.Println(animal.Speak())
    }
}

 

 

 

728x90

'Go' 카테고리의 다른 글

Go 구조체 메서드의 값 리시버와 포인터 리시버  (1) 2024.09.13
Go 함수와 메서드 차이  (0) 2024.06.24

+ Recent posts