인터페이스 구현 검증
2024. 11. 14. 22:22ㆍDevelopment/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 |
---|