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의 별칭 |