Go에서 인터페이스를 콘크리트 유형으로 캐스트

Jay Singh 2022년8월23일
Go에서 인터페이스를 콘크리트 유형으로 캐스트

Go 언어의 인터페이스는 다른 언어의 인터페이스와 다릅니다. 인터페이스는 하나 이상의 메서드 서명 모음을 표현하는 데 사용되는 Go 언어의 유형입니다.

추상적입니다. 따라서 인스턴스를 구성할 수 없습니다. 그러나 인터페이스의 필수 메소드를 포함하는 구체적인 유형 값을 할당할 수 있는 인터페이스 유형 변수를 설정할 수 있습니다.

또는 다르게 말하면 인터페이스는 메소드 세트이자 사용자 정의 유형입니다.

이 자습서는 Go에서 인터페이스를 구체적인 유형으로 캐스팅하는 방법을 보여줍니다.

Go에서 인터페이스를 콘크리트 유형으로 캐스트

.(type) 연산자는 인터페이스 유형 객체를 구체적인 유형으로 변환하는 데 유용합니다. 유형 구현 가능한 메서드 서명의 컬렉션은 인터페이스를 구성합니다.

이 예에서는 Person 인터페이스 유형 개체를 만듭니다. Jay Singh를 인터페이스 객체에 Person으로 추가하고, 객체를 인터페이스 유형에서 구체적인 유형으로 변환하는 메소드를 작성하고, 인터페이스 객체 유형의 데이터에 액세스하고, 결과를 표시합니다.

package main

import "fmt"

type Person struct {
    firstName string
    lastName  string
}

func main() {
    person := Person{
        firstName: "Jay",
        lastName:  "Singh",
    }

    printIfPerson(person)
}

func printIfPerson(object interface{}) {
    person, ok := object.(Person)

    if ok {
        fmt.Printf("Hello %s!\n", person.firstName)
    }
}

출력:

Hello Jay!

관련 문장 - Go Conversion