✔기본자료형
1. bool: true, false를 저장
2. string: 문자, 문자열을 저장
3. int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, uintptr: 정수형
int, uint, uintptr은 32비트 시스템에서는 32비트길이, 64에서는 64비트길이!
특별히 정수 크기 및 부호를 지정할 이유가 없으면 int 쓴다.
4. byte: uint8과 같다.
5. float32, float64: 실수형
7. complex64, complex128: 복소수형
✔형 변환: 변환할 타입(변환할 값)
import (
"fmt"
"math/cmplx"
)
var (
i int
f float64
MaxInt uint64 = 1 << 64 - 1
z complex128 = cmplx.Sqrt(-5 + 12i)
)
func main(){
const format = "%T(%v)\n"
fmt.Printf(format, MaxInt, MaxInt)
fmt.Printf(format, z, z)
//float형인 변수 f에 int형인 변수 i를 대입할 수 없다!
//int에서 float64로 묵시적 타입 변환하지 못하기 때문
f = i
//다른 타입을 저장하려면 변환할 타입(변수)와 같이, 형 변환을 해줘야 한다.
f = float(i)
}
>>실행결과
uint64(18446744073709551615) complex128((2+3i)) |
위 예제에서는 모르는 것이 많았다.
1. 1<<64 - 1 이 어떤 식을 표현하는지 몰라서 찾아보았다.
shift 연산자 <<, >>
1<<64 라고 하면, 1의 비트를 왼쪽으로 64번 이동한 것이다. (>>이면 오른쪽으로 이동)
그리고 64비트 부호 없는 정수를 최대화하고 오류를 방지하기 위해 1을 빼는 것이다.
2. %T(%v)\n 는 어떤 형식으로 바꿔주는지 몰라서 찾아보았다.
형식지정자
형식지정자 | 의미 | 입력 | 출력 |
%T | 타입을 표현 | fmt.Printf("%T\n", num1) | int |
%v | 값을 표현 | fmt.Printf("%v\n", num1) | 1 |
참고문서 링크
문자열 포맷팅: https://mingrammer.com/gobyexample/string-formatting/
shift 연산자: https://dejavuqa.tistory.com/328
stackoverflow 1 << 64 - 1: https://stackoverflow.com/questions/26833421/how-does-1-64-1-work
'GoLang' 카테고리의 다른 글
21.10.07 zero values (0) | 2021.10.07 |
---|---|
21.09.13 [프로그래머스] 여러가지 변수 선언 방법 (0) | 2021.09.13 |
21.09.13 [프로그래머스] 함수와 여러가지 리턴 방법 (0) | 2021.09.13 |
21.09.13 [프로그래머스] 함수와 매개변수 (0) | 2021.09.13 |
21.09.13 [프로그래머스] Hello World (0) | 2021.09.13 |