타입

타입은 어떠한 값들의 집합과 그 값들에 대한 연산과 메서드로 이루어져 있다. 타입은 (타입 이름이 있다면)타입 이름 또는 이미 존재하는 타입들로 구성된 타입 리터럴을 사용하여 나타낼 수 있다.

Type      = TypeName | TypeLit | "(" Type ")" .
TypeName  = identifier | QualifiedIdent .
TypeLit   = ArrayType | StructType | PointerType | FunctionType | InterfaceType | SliceType | MapType | ChannelType .

불리언, 숫자, string 타입의 경우 여러 타입 이름들을 가지는데 이들은 미리 선언되어(predeclared) 있다. 그외에는 타입 선언(type declarations)을 통해 타입이름을 지정할 수 있다. 합성 타입(Composite types)-배열, struct, 포인터, 함수, interface, 슬라이스, map, 채널 타입-은 타입 리터럴을 이용해 만들 수 있다.

각각의 타입 T내재 타입(underlying type)을 가지고 있다: 만약 T가 사전에 선언(predeclared)된 불리언, 숫자, string 타입 중 하나거나 타입 리터럴이라면 내재 타입은 T 이다. 그 외의 경우, T의 내재 타입은 타입 선언(type declarations)에서 T가 참조하는 타입의 내재 타입이다.

type (
    A1 = string
    A2 = A1
)

type (
    B1 string
    B2 B1
    B3 []B1
    B4 B3
)

string, A1, A2, B1, B2의 내재 타입은 string이다. []B1, B3, B4의 내재 타입은 []B1이다.

results matching ""

    No results matching ""