[Go] 인터페이스
Updated:
개요
- 타입이 가져야하는 메소드들의 집합
- 타입 단언(type assertion)
- 인터페이스를 특정 타입으로 변환
- 두번째 반환 값을 통해 변환 성공 여부 확인
- Stringer 인터페이스
- 문자열을 반환하는 String() 메소드 정의
예제
- 코드
package main import "fmt" type polygon interface { getArea() int } type triangle struct { } func (t *triangle) getArea() int { return 1 } func (t *triangle) String() string { return "triangle" } func (t *triangle) triangleFunc() { println("triangleFunc() call") } type square struct { } func (s *square) getArea() int { return 2 } func (s *square) String() string { return "square" } func (s *square) squareFunc() { println("squareFunc() call") } func job(pg polygon) { fmt.Println(pg) println(pg.getArea()) t, ok := pg.(*triangle) if ok { t.triangleFunc() } s, ok := pg.(*square) if ok { s.squareFunc() } } func main() { job(&triangle{}) println("\n------\n") job(&square{}) }
- 실행 결과
triangle 1 triangleFunc() call ------ square 2 squareFunc() call