
182
러닝 Go
이는 뒤에 따르는 구조체 리터럴의
기본 타입
을 갖는
Person
이름의 사용자 정의 타입을 선언
하는 것으로 읽어야 한다. 구조체 리터럴 외에도 기본 타입 또는 복합 타입 리터럴을 사용하여
구체적인 타입을 정의할 수 있다. 여기에 몇 가지 예제를 보자.
type Score int
type Converter func(string)Score
type TeamScores map[string]Score
Go
는 패키지 블록에서부터 모든 블록 레벨에서도 타입을 선언할 수 있도록 한다. 하지만 타입
은 해당 범위 내에서만 접근이 가능하다. 단하나의 예외는 외부로 노출
export
된 패키지 블록 레
벨 타입이다.
9
장에서 자세히 다루어 보도록 하자.
NOTE
_ 타입에 관해 조금 더 쉽게 이야기하기 위해 몇 가지 용어를 정의해야 한다. 추상 타입
abstract
type
은
타입이 무엇을 하는지 지정하지만 어떻게 하는지는 지정하지 않는 것이다. 구체 타입
concrete
type
는 무엇을 하
는지와 어떻게 하는지를 지정한다. 이것은 데이터를 저장하는 지정된 방법과 타입에 선언된 모든 메서드의
구현을 제공한다는 의미이다.
Go
에서 모든 타입은 추상 타입이거나 구체 타입이지만, 일부 언어는 추상 클래
스 혹은 자바의 기본 메서드와 함께 인터페이스를 사용하는 하이브리드 타입을 ...