목차
- Go 자료형 종류
- Go Boolean (참거짓) 자료형
- Go Integer (정수) 자료형
- Go Float (부동소수) 자료형
- Go String (문자열) 자료형
Go 자료형 종류
- 프로그래밍에서 데이터타입은 매우 중요.
- 데이터타입은 변수 값의 크기와 타입 지정.
- Go는 정적 데이터타입임. (즉, 타입 지정 시, 해당 타입 데이터만 저장)
- Go는 크게 3가지 유형의 기본 데이터타입 가짐.
- bool - 참거짓 형태 (true/false)
- Numeric - 정수(int), 부동소수(float32/float64), 복소수(complex64/complex128)
- string - 문자열
[예제]
package main
import ("fmt")
func main() {
var a = true
var b = 3
var c = 3.14
var d = 3 + 4i
var e = "Homzzang.com"
fmt.Printf("%v - %T\n", a, a) // true - bool
fmt.Printf("%v - %T\n", b, b) // 3 - int
fmt.Printf("%v - %T\n", c, c) // 3.14 - float64
fmt.Printf("%v - %T\n", d, d) // (3+4i) - complex128
fmt.Printf("%#v - %T\n", e, e) // "Homzzang.com" - string
}
Go Boolean (참거짓) 자료형
- bool 키워드로 선언.
- true 또는 false 값만 가짐.
- 기본값은 false임.
- 조건문에서 주로 사용.
[예제]
package main
import ("fmt")
func main() {
var a bool = true // 자료형 지정 O
var b = true // 자료형 지정 X 경우, 값에서 유추.
var c bool // 값 할당 안 하면, 기본값 false가 할당됨.
d := true
fmt.Println(a) // true
fmt.Println(b) // true
fmt.Println(c) // false
fmt.Println(d) // true
}
Go Integer (정수) 자료형
정수는 소수점 없는 숫자 의미. (예) 1, 23, 345, -6789
1.
정수 자료형은 2가지 범주로 구분됨.
2.
정수의 기본 자료형은 int 이며, 미지정 시 int 자료형이 됨.
[부호 있는 정수]
- 아래 5가지 int 키워드 중 하나로 선언.
- 양수값과 음수값 모두 저장 가능.
int
플랫폼에 좌우. (32비트 경우 32bit, 64비트 경우 64bit)
32비트 경우: -2147483648 ~ 2147483647
64비트 경우: -9223372036854775808 ~ 9223372036854775807
int8
8 bit (= 1 byte)
-128 ~ 127
int16
16 bit (= 2 byte)
-32768 ~ 32767
int32
32 bit (= 4 byte)
-2147483648 ~ 2147483647
int64
64 bit (= 8 byte)
-9223372036854775808 ~ 9223372036854775807
(예제)
package main
import ("fmt")
func main() {
var x int = 123
var y int = -456
fmt.Printf("값: %v, 타입: %T\n", x, x) // 값: 123, 타입: int
fmt.Printf("값: %v, 타입: %T", y, y) // 값: -456, 타입: int
}
[부호 없는 정수]
- 아래 5가지 uint 키워드 중 하나로 선언.
- 음수값이 아닌 정수만 저장 가능.
uint
플랫폼에 좌우 (32 비트 경우 32bit, 64비트 경우 64bit)
32비트 경우: 0 ~ 4294967295
64비트 경우: 0 ~ 18446744073709551615
uint8
8 bit (= 1 byte)
0 ~ 255
uint16
16 bit (= 2 byte)
0 ~ 65535
uint32
32 bit (= 4 byte)
0 ~ 4294967295
uint64
64 bit (= 8 byte)
0 ~ 18446744073709551615
(예제)
package main
import ("fmt")
func main() {
var x uint = 123
var y uint = 0
fmt.Printf("값: %v, 타입: %T\n", x, x) // 값: 123, 타입: uint
fmt.Printf("값: %v, 타입: %T", y, y) // 값: 0, 타입: uint
}
[정수 자료형 선택 기준]
해당 정수 데이터를 모두 담을 수 있는 자료형 지정 필요.
만약, 지정 정수 자료형 벗어나는 정수 할당 시 오류 발생.
(예제) - int8 자료형 경우, (-128 ~ 127) 사이의 정수만 할당 가능.
package main
import ("fmt")
func main() {
var x int8 = 1234 // 에러 유발
fmt.Printf("값: %v, 타입: %T", x, x) // 에러 발생
}
결과값:
# command-line-arguments
.\homzzang.go:8:6: constant 1234 overflows int8
Go Float (부동소수) 자료형
소수점 있는 숫자 저장에 사용. (예) 1.23, -4.567
1.
float 자료형 경우, 2가지 종류 존재.
- float32 -32 bit (-3.4e+38 ~ 3.4e+38)
- float64 - 64 bit (-1.7e+308 ~ +1.7e+308)
2.
float 기본 자료형은 float64이며, 자료형 미지정 시 float64로 설정됨.
[float32 경우]
package main
import ("fmt")
func main() {
var x float32 = 123.45
var y float32 = 3.4e+38
fmt.Printf("값: %v, 타입: %T\n", x, x) // 값: 123.45, 타입: float32
fmt.Printf("값: %v, 타입: %T", y, y) // 값: 3.4e+38, 타입: float32
}
[float64 경우]
float32보다 더 큰 숫자를 저장 가능.
package main
import ("fmt")
func main() {
var x float64 = 1.7e+308
fmt.Printf("값: %v, 타입: %T\n", x, x) // 값: 1.7e+308, 타입: float64
}
[부동소수 자료형 선택 기준]
해당 부동소수 데이터를 모두 담을 수 있는 자료형 지정 필요.
만약, 지정 부동소수 자료형 벗어나는 숫자 할당 시 오류 발생.
(예제) - float32 경우, (-3.4e+38 ~ 3.4e+38) 범위 숫자만 저장 가능.
package main
import ("fmt")
func main() {
var x float32 = 3.4e+39 // 에러 유발
fmt.Println(x) // 에러 발생
}
결과값:
# command-line-arguments
.\homzzang.go:8:6: constant 3.4e+39 overflows float32
Go String (문자열) 자료형
문자열 저장에 사용됨.
- string 키워드로 선언
- 문자열 데이터는 큰따옴표로 묶어야 함.
- 기본값은 "" (즉, 빈 문자열)임.
[예제]
package main
import ("fmt")
func main() {
var a string = "홈짱닷컴"
var b string
c := "Homzzang.com"
fmt.Printf("값: %#v, 타입: %T\n", a, a)
// 값: "홈짱닷컴", 타입: string
fmt.Printf("값: %#v, 타입: %T\n", b, b)
// 값: "", 타입: string
fmt.Printf("값: %#v, 타입: %T\n", c, c)
// 값: "Homzzang.com", 타입: string
}
최신댓글