Go 언어 타입에 대하여 배워보기
오늘은 Go 언어의 타입에 대하여 작성하면서 배워보려 합니다.
go 언어에는 타입이 크게 bool, numeric, string으로 구별되어 있습니다.
bool
package main
import (
"fmt"
)
func main() {
a := true
b := false
fmt.Println(a,b)
fmt.Println(a&&b)
fmt.Println(a||b)
}
변수에 true, false로 부여할 수 있습니다.
numeric
- Signed integers
- int8: 8 비트 / -128 ~ 127
- int16: 16 비트 / -32768 ~ 32767
- int32: 32 비트 / -2147483648 ~ 2147483647
- int64: 64 비트 / -9223372036854775808 ~ 9223372036854775807
- int: 32 비트 or 64 bit / -2147483648 ~ 2147483647 or -9223372036854775808 ~ 9223372036854775807
package main
import (
"unsafe"
"reflect"
"fmt"
)
func main() {
var c int64
c = 9223372036854775807
d := 9223372036854775807
fmt.Println(reflect.TypeOf(c))
fmt.Println(reflect.TypeOf(d))
fmt.Println(unsafe.Sizeof(c))
fmt.Println(unsafe.Sizeof(d))
}
예제코드를 작성한 컴퓨터가 64비트이므로 int형이 64비트이므로 223372036854775807 까지 지원함을 확인할 수 있습니다.
참고로 reflect의 TypeOf으로 변수의 타입을 확인할 수 있으며, unsafe의 Sizeof로 변수의 크기를 확인할 수 있습니다.
- Unsigned integers
- uint8: 8 비트 / 0 ~ 255
- uint16: 16 비트 / 0 ~ 65535
- uint32: 32 비트 / 0 ~ 4294967295
- uint64: 64 비트 / 0 ~ 18446744073709551615
- uint : 32 비트 or 64 비트 / 0 ~ 4294967295 or 0 ~ 18446744073709551615
package main
import (
"unsafe"
"fmt"
)
func main() {
var e uint
e = 18446744073709551615
fmt.Println(unsafe.Sizeof(e))
}
타 언어에서 보통 unsigned int라고 불리는 것을 go에서는 uint라고 적습니다.
이 예제코드 역시 64비트 컴퓨터에서 작성했으므로 64비트인 18446744073709551615까지 출력됨을 확인할 수 있습니다.
- Floating point types
- float32: 32 비트
- float64: 64 비트
package main
import (
"fmt"
)
func main() {
f,g := 3.14, 3.15
fmt.Println(f,g)
tmp1 := f+g
tmp2 := f-g
fmt.Println(tmp1,tmp2)
}
실수는 부동 소수점으로 지원합니다.
- Complex types
- complex64: complex numbers which have float32 real and imaginary parts
- complex128: complex numbers with float64 real and imaginary parts
package main
import (
"fmt"
)
func main() {
tmp3 := complex(1,5)
tmp4 := 1+5i
fmt.Println(tmp3,tmp4)
}
복소수 또한 지원합니다.
complex 함수를 사용하여 Complex 타입을 사용할 수 있습니다.
- rune
package main
import (
"fmt"
)
func main() {
var z = 'A'
fmt.Println(z)
}
UTF-8 character를 int형으로 저장할 수 있는 rune 타입입니다.
string
package main
import (
"fmt"
)
func main() {
var name string
name = "string"
fmt.Println(name)
}
문자열을 저장할 수 있는 string 타입입니다.
타입 변환
package main
import (
"fmt"
)
func main() {
var(i ,j =1, 3.14)
fmt.Println(i + int(j))
}
go 언어는 명시적 형변환을 지원하므로 위와 같이 변수 타입을 변환할 수 있습니다.
Written on September 5, 2018