Go 변수 선언과 타입 정리

2024. 11. 24. 18:24Tucker의 Go 언어 프로그래밍

변수 : 값을 저장하는 메모리 공간을 가리키는 이름

 

변수가 왜 중요한가?

프로그램이 하는 모든 것은 결국 데이터를 연산/조작 하는 일,

이 때 Code 가 메모리 공간에 저장된 데이터에 접근하기 위한 도구가 "변수"

  • 변수의 4가지 속성 : 이름, 값, 주소, 타입

 

Golang 에서 지원하는 변수 선언 방식 4가지

// 기본 변수 할당 방식
var a int = 1

// 기본값 생략, int의 경우 기본값 0으로 설정되고 string의 경우 ""으로 설정됨
var a int

// type 생략 -> 반드시 초기값 설정 해줘야 함
var a = 1

// 선언 대입문 -> var, type 둘 다 생략 가능
a := 1

 

타입별 기본값

타입 기본값
모든 정수 타입
(int8, int16, int32, int64, uint8, uint16, uint32, uint64, int, uint, byte, rune)
0
모든 실수 타입
(float32, float64, complex64, complex128)
0.0
불리언 false
문자열 ""(빈 문자열)
그 외 nill (정의되지 않은 메모리 주소 나타내는 Go 키워드)

 

 

 

 

Golang 은 최강 type 언어 서로 다른 타입 간 연산을 허용하지 않음

 

정수형 타입변환 

package main

import "fmt"

func main() {
	
    a := 3 // 선언 대입문을 사용해 a 변수에 정수형 할당 -> 타입은 int가 됨
    var b int64 = 5
    fmt.Println(a * int(b)) // 결과 : 15
}

// 64 bit 컴퓨터에서의 int, int64 연산도 안됨 둘은 엄연히 다른 타입

 

 

실수형 타입변환

package main

import "fmt"


func main() {
	var a float64 = 3.5
    var b int = 3
    
    fmt.Println(int(a) * b) // 결과 : 9 (소수점 버려짐)
    fmt.Println(a * float64(b)) // 결과 : 10.5
}

 

 


 

Go의 int와 int64 차이

  1. int는 플랫폼 의존적 타입
    • 64비트 시스템에서는 int가 64비트 크기이고, 32비트 시스템에서는 32비트 크기
    • 하지만 int는 어디까지나 플랫폼 의존적이며, 타입 자체는 int64와 다름
  2. int64는 명시적 타입
    • int64는 항상 64비트 크기이며, 플랫폼에 의존하지 않음
    • int와는 별개의 타입으로 간주되므로 연산하려면 명시적 변환이 필요

'Tucker의 Go 언어 프로그래밍' 카테고리의 다른 글

Go vs Python 간략 비교  (0) 2024.11.26