숫자형
package main
import "fmt"
func main() {
//데이터 타입 : 숫자형
//정수, 실수, 복소수
//32bit, 64bit, unsigned(양수)
//정수 : 8진수(0), 16진수(0x), 10진수
var num1 int = 17
var num2 int = -68
var num3 int = 0631 // 8진수로 저장
var num4 int = 0x32fa2c75 // 16진수로 저장
fmt.Println("ex1 : ", num1)
fmt.Println("ex1 : ", num2)
fmt.Println("ex1 : ", num3)
fmt.Println("ex1 : ", num4)
}
package main
import "fmt"
func main() {
//데이터 타입 : 숫자형
//정수형 문자 출력
//예제1
//아스키(영문)
var char1 byte = 72
var char2 byte = 0110
var char3 byte = 0x48
//유니코드(한글)
var char4 rune = 50556 // 유니코드
var char5 rune = 0142574 // 44032 (8진수)
var char6 rune = 0xC57C // 44032 (16진수)
fmt.Printf("%c %c %c\n", char1, char2, char3)
fmt.Printf("%d %d %d\n", char1, char2, char3)
fmt.Printf("%d %o %x\n", char1, char2, char3)
fmt.Printf("%c %c %c\n", char4, char5, char6)
fmt.Printf("%d %d %d\n", char4, char5, char6)
fmt.Printf("%d %o %x\n", char4, char5, char6)
}
package main
import "fmt"
func main() {
//데이터 타입 : 숫자형
//실수형(부동소수점)
//float32(7자리), float64(15자리)
//예제1
// 소수점 사용
var num1 float32 = 0.14
var num2 float32 = .75647
var num3 float32 = 442.0378373
var num4 float32 = 10.0
// 지수 표기법
var num5 float32 = 14e6
var num6 float64 = .156875E+3
var num7 float64 = 5.32521e-10
fmt.Println("ex1 : ", num1)
fmt.Println("ex1 : ", num2)
fmt.Println("ex1 : ", num3)
fmt.Println("ex1 : ", num4-0.1) //주의1
fmt.Println("ex1 : ", float32(num4-0.1)) //주의2
fmt.Println("ex1 : ", float64(num4-0.1)) //주의3
fmt.Println("ex1 : ", num5)
fmt.Println("ex1 : ", num6)
fmt.Println("ex1 : ", num7)
}
package main
import "fmt"
func main() {
//데이터 타입 : 숫자형
//복소수 형(complex number)
//complex64(32bit 실수 + 허수)
//complex128(64bit 실수 + 허수)
//예제1
var num1 complex64 = 5 + 7i
num2 := 8 + 1i
num3 := complex(3, 2) //complex128
var num4 complex128 = 9 + 3i
num5 := complex64(2 + 3i)
fmt.Println("ex1 : ", num1)
fmt.Println("ex1 : ", num2)
fmt.Println("ex1 : ", num3)
fmt.Println("ex1 : ", num4)
fmt.Println("ex1 : ", num5)
//예제2
//real() : 실수부 출력
//imag() : 허수부 출력
fmt.Println("ex2 : ", num1, real(num1), imag(num1))
fmt.Println("ex2 : ", num2, real(num2), imag(num2))
fmt.Println("ex2 : ", num3, real(num3), imag(num3))
fmt.Println("ex2 : ", num4, real(num4), imag(num4))
fmt.Println("ex2 : ", num5, real(num5), imag(num5))
}
숫자연산
package main
import "fmt"
import "math"
func main() {
//숫자 연산(산술, 비교)
//타입이 같아야 가능
//다른 타입끼리는 반드시 형 변환 후 연산
//형 변환 없을 경우 예외(에러) 발생
// +, -, *, /, %, >>, <<, &, ^..
//예제1 : 최대값 확인
var n1 uint8 = math.MaxUint8
var n2 uint16 = math.MaxUint16
var n3 uint32 = math.MaxUint32
var n4 uint64 = math.MaxUint64
fmt.Println("ex1 : ", n1)
fmt.Println("ex1 : ", n2)
fmt.Println("ex1 : ", n3)
fmt.Println("ex1 : ", n4)
fmt.Println("ex1 : ", math.MaxInt8)
fmt.Println("ex1 : ", math.MaxInt16)
fmt.Println("ex1 : ", math.MaxInt32)
fmt.Println("ex1 : ", math.MaxInt64)
fmt.Println("ex1 : ", math.MinInt8)
fmt.Println("ex1 : ", math.MinInt16)
fmt.Println("ex1 : ", math.MinInt32)
fmt.Println("ex1 : ", math.MinInt64)
fmt.Println("ex1 : ", math.MaxFloat32)
fmt.Println("ex1 : ", math.MaxFloat64)
//예제2 (형 변환)
n5 := 100000 //int
n6 := int16(10000)
n7 := uint8(100)
//fmt.Println("ex2 : ", n5+n6) //예외 발생(컴파일 에러)
//fmt.Println("ex2 : ", n6+n7) //예외 발생(컴파일 에러)
fmt.Println("ex2 : ", n5+int(n6))
fmt.Println("ex2 : ", n6+int16(n7))
fmt.Println("ex2 : ", n6 > int16(n7))
fmt.Println("ex2 : ", n6-int16(n7) > 5000)
}
package main
import "fmt"
func main() {
//예제1
var n1 uint8 = 125
var n2 uint8 = 90
fmt.Println("ex1 : ", n1+n2)
fmt.Println("ex1 : ", n1-n2)
fmt.Println("ex1 : ", n1*n2)
fmt.Println("ex1 : ", n1/n2)
fmt.Println("ex1 : ", n1%n2)
fmt.Println("ex1 : ", n1<<2)
fmt.Println("ex1 : ", n1>>2)
fmt.Println("ex1 : ", ^n1)
//예제2
var n3 int = 12
var n4 float32 = 8.2
var n5 uint16 = 1024
var n6 uint32 = 120000
//fmt.Println(n3 + n4) //예외 발생(컴파일 에러)
fmt.Println(float32(n3) + n4) //형 변환 후 계산
fmt.Println(n3 + int(n4)) //소수 부분 값 손실
fmt.Println(n5 + uint16(n6)) //형 변환에 의한 값 손실
}
package main
import "math"
func main() {
//예제1(오버플로우 에러 : 범위 초과)
var n1 uint8 = math.MaxUint8 + 1
var n2 uint16 = math.MaxUint16 + 1
var n3 uint32 = math.MaxUint32 + 1
var n4 uint64 = math.MaxUint64 + 1
//예제2(오버플로우 에러 : 범위 미만)
var n1 uint8 = -1
var n2 uint16 = -1
var n3 uint32 = -1
var n4 uint64 = -1
}