go에서는 자료형에 새로 이름을 붙일 수 있습니다. 사실 rune형은 int32의 별칭입니다. 이런 자료형을 명명된 자료형(Named Type)이라고 합니다. 

type rune int32


엄밀히 말해서 int32 역시 명명된 자료형에 속합니다. 그러면 명명되지 않은 자료형 (Unnamed Type)은 어떤 것들이 있을까요

type runes []rune
type MyFunc func() int

위와 같이 runes와 MyFunc는 이름 자체만으로 자료형을 지칭하는 것이기에 명명된 자료형이 되고, []rune과 func() int는 이름만으로 자료형을 지칭하는 것이 아니기 때문에 명명되지 않은 자료형으로 구분됩니다. 명명된 자료형과 명명되지 않은 자료형 모두에 type 예약어를 사용하여 새 이름을 붙여줄 수 있습니다. 


type Test1 int
type Test2 int

위와 같이 int 타입의 서로 다른 명명된 자료형을 선언한 다음 비교를 하면 서로 다른 타입으로 나옵니다. 한마디로 명명된 자료형끼리는 호환이 되지 않습니다. 비교, 또는 반환을 할 때는 해당 타입으로 변환을 해줘야 가능합니다.


자료형에 이름을 붙이면 자료형을 검사함으로써 프로그램을 직접 수행하기 전에 컴파일 시점에서 버그를 어느정도 예방할 수 있습니다.

+ Random Posts