인터페이스 구현 검증

2024. 11. 14. 22:22Development/Golang

728x90
반응형

코드를 보다 보면

var _ SomeInterface = &SomeStruct{}

이런 식으로 표현되어 있는 것을 종종 본적이 있을 것이다. Golang의 interface는 덕 타이핑을 사용하여 interface 내에 선언된 method들의 실제 구현 없이 method명만 언급되어도 된다.

예를 들어 SomeInterface가 아래와 같은 method명 들을 가지고 있다고 가정하자.

type SomeInterface interface {
    GetHomeDir() string
    GetApp(string) *types.App
    GetNumber() (*big.Int, error)
}

이 때 코드 내에 var _ SomeInterface = &SomeStruct{}로 명시된 상황에서 SomeStruct가 receiver로 method를 가지고 있지 않을 시 오류가 발생한다. SomeStruct는 이런식으로 method를 보유해야 한다.

type SomeStruct struct {}

func (s *SomeStruct) GetHomeDir() string {
    ...
}

func (s *SomeStruct) GetApp(something string) *types.App {
    ...
}

func (s *SomeStruct) GetNumber() (*big.Int, error) {
    ...
}

그럼 왜 이런식으로 사용을 할까? Golang 컴파일 시에 SomeStruct가 특정 인터페이스를 구현하도록 강제하고 싶은 경우나, 코드 유지보수 시 인터페이스와 구현 타입의 관계를 명시적으로 나타내 가독성을 높이기 위함이다.

728x90
반응형

'Development > Golang' 카테고리의 다른 글

프로그램에서 동작 중인 goroutines 확인  (0) 2024.11.13