break        default      func         interface    select
case         defer        go           map          struct
chan         else         goto         package      switch
const        fallthrough  if           range        type
continue     for          import       return       var

//제목을 타입으로 바꿔야하지 않을까?

const, var, type

이 것은 변수선언과 관련된 부분이다.

var

var a int
var s string

변수를 선언할 때 사용한다.

  • 여러 변수를 선언할 때 코드의 양이 줄고 코드 가시성을 확보할 수 있다. 코드 작업의 경제적인 측면을 고려하였다.
  • var(
    a int
    s string
    )
    

type

개발자는 자신만의 타입을 생성할 수 있다. 중복도 가능하다. 하지만 중요한 것은 동일한 타입을 베이스로 삼았더라도 타입 이름이 다른 경우 값을 할당하는 것은 빌드시 에러가 발생한다.

type MyInt int

type IntArray [10]int

type Node struct {
    left, right *Node
    value *Comparable
}

type MyInterface interface {
    CountSize() int
    Add(a, b int)
    Multi(a, b int)
}

const

다른 언어와 다르게 특별하게 동작한다. 선언으로 존재하고 실제로는 컴파일 되는 시점에 생성된다. 상수로 가능한 것은 숫자, 문자, 문자열, boolean이 가능하다. 컴파일 되는 시점에 생성하므로 상수 표현을 가지고 있다.

  • 1<<3 -> 고정된 표현
  • math.Sin(math.Pi/4) -> math.Sin은 함수고 이는 런타임에 일어나기 때문에

iota

iota를 이용해서 열거형을 표현할 수 있다.

type ByteSize float64

const (
    _  = iota
    KB ByteSize = 1
    MB
    GB
    TB
    PB
    EB
    ZB
    YB
)

func (b ByteSize) String() string {
    switch {
        case b >= YB:
            return fmt.Sprintf("%.2fYB", b/YB)
        case b >= ZB:
            return fmt.Sprintf("%.2fZB", b/ZB)
    }
}

type

http://thenewstack.io/understanding-golang-type-system/ 프로그램에서 데이터를 구성하는 방법이다. 2가지 타입을 제공한다.

  • 주의 : Go에서는 엄격하게 타입에 대해서 관리하고 있다. 따라서 다른 타입끼리 할당이 일어나는 경우

빌트인 타입 (built-in type)

타입 하는 일
bool true/false를 표현
string 문자열을 표현
uint 시스템에 따라 32나 64 비트 양의 정수 표현
int 시스템에 따라 32나 64 비트 정수 표현
uintptr 포이터 값을 저장
uint8 8비트로 양의 정수 표현
uint16 16비트로 양의 정수 표현
uint32 32비트로 양의 정수 표현
uint64 64비트로 양의 정수 표현
int8 8비트로 정수 표현
int16 16비트로 정수 표현
int32 32비트로 정수 표현
int64 64비트로 정수 표현
float32 32비트로 소수점을 가지는 수를 표현 IEEE-754
float64 64비트로 소수점을 가지는 수를 표현 IEEE-754
complex64 float32로 소수점을 가지는 수를 표현
complex128 float64로 소수점을 가지는 수를 표현
byte uint8에 대한 별칭
rune 유니코드 포인트를 표현하며 int32의 별칭

사용자 정의 타입

타입 변환

타입 assertiong

#