티스토리 뷰
반응형
인터페이스
- 객체의 동작을 표현하는 것
- 내부 구현이 아닌 동작 방식만을 표현
- 추상 메커니즘을 제공
- 매개변수로 사용되면 '값이 무엇을 할 수 있는지'에 집중할 수 있음
- 덕 타이핑 방식: 변수와 메서드의 집합이 객체의 타입을 결정
인터페이스 정의
type 인터페이스명 interface {
메서드1(매개변수) 반환타입
메서드2(매개변수) 반환타입
}
함수 시그니처가 같은 메서드를 가진 타입은 인터페이스로 사용 가능하다.
shaper 인터페이스는 area 메서드를 가지고 있다. decribe는 shaper 인터페이스를 받아 shaper의 area 메서드의 리턴값을 출력한다.
main에서는 rect 구조체를 만들고 descirbe 함수를 실행한다.
rect 구조체와 sharper 인터페이스는 연결 고리가 없다. rect 타입은 sharper 인터페이스에 있는 area 메서드를 제공한다. 따라서 shaper와 같은 메서드를 가지고 있기 때문에, rect 타입은 shaper 인터페이스로 사용가능하다.
💡 인터페이스 이름 & 단위
인터페이스 이름은 Reader(Read), Printer(Print)처럼 메서드 이름에 er 또는 r을 붙인다.
인터페이스는 매서드가 세 개를 넘지 않도록 짧은 단위로 만든다.
익명 인터페이스
인터페이스의 타입을 따로 정의하지 않고 익명으로 사용하는 것이 익명 인터페이스이다.
display 함수의 매개변수 타입을 interface로 바로 정의 했다. display 함수는 show() 메서드를 가진 타입을 매개변수로 받는다.
위의 함수는 show() 메서드를 가지는 타입을 매개변수로 전달받고, show() 메서드를 실행시키는 함수이다.
빈 인터페이스
interface{}
위는 메서드를 정의하지 않은 인터페이스이다.
위의 인터페이스 타입이면 어떤 값이든 전달 받을 수 있다.
위의 코드는 빈 인터페이스를 사용한 예시이다. 함수 display의 파라미터로 빈 인터페이스가 활용되었다.
display 함수는 어떤 struct든 받아서 출력을 할 수 있는 함수이다.
끝
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- squash merge
- pm.expect
- hashcode
- 주생성자
- go 특징
- git
- 네이버 2022 공채
- DGS Framework
- Basic Type
- string
- python3
- Python
- 확장 함수
- 1차 인터뷰
- postman collection
- java
- Kotlin
- solidity
- downTo
- Squash and merge
- Kotlin In Action
- github
- graphql
- postman
- 2차 인터뷰
- mysql
- pm.test
- postman tests
- 코틀린
- 코딩테스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함