본문 바로가기
Dev/Go

Golang 변수와 상수

by RaCoCeTTe 2024. 4. 8.

Golang 변수 종류


1. 불린

bool

 

2. 정수형

int, int8, int16, int32, int64 , uint, uint8, uint16, uint32, uint64, uintptr

 

go 언어는 비트 수를 직접적으로 표현하는게 더 좋다고 생각하는 듯 합니다.

저는 처음 봤을땐 "기존 다른 언어에서 short, int ,long을 이미 사용 중인데 굳이 익숙지 않게 변수명이 다르네 " 라고 생각했는데

보다 보니까 오히려 변수에 비트수도 확실히 알 수 있고 익숙해지면 short int long 보다 배우는 입장에서 좋을거라고 생각됩니다.

 

3. 문자열

string

Go에서 문자열은 불변성(Immutable)을 가지고 있어서 값을 수정할 수 가 없다고 합니다.

 

알아본 이유는

 

- 단순해지기 때문에 디버깅 & 코드 추론이 쉽다.

- 메모리 관리에 효율적이고 불변이다 보니 컴파일러에 의해 최적화 하기 좋다.

 

라고 하는데.. 

아직 Dart,Java,C#을 해본 저로서는 사용 중에 다소 어색할 것 같아 걱정...

 

4. 실수형 

float32, float64, complex64, comprex128

 

float64는 저희가 기존에 알던 Double..

 

complex는 복소수를 사용할때 쓰는 변수인데 

아직 개발하면서 복소수를 사용한 적이 없다...

 

5, 기타

byte : uint8과 동일한 타입, 바이트 코드에 사용합니다. 

rune : int32하고 동일한 타입, 유니코드 코드포인트에 사용됩니다.

 

 

* 코드포인트? : 텍스트를 표현하기 위한 시스템(예, 유니코드)에서 추상 문자를 나타내기 위해 할당된 숫자입니다 .

예시 )  유니코드에서, 코드 포인트는 "U+1234" 형식으로 표현

https://developer.mozilla.org/ko/docs/Glossary/Code_point

 

코드 포인트 (Code point) - MDN Web Docs 용어 사전: 웹 용어 정의 | MDN

**코드 포인트 (code point)**는 텍스트를 표현하기 위한 시스템(예, 유니코드)에서 추상 문자를 나타내기 위해 할당된 숫자입니다. 유니코드에서, 코드 포인트는 "U+1234" 형식으로 표현됩니다. 여기

developer.mozilla.org

 

 

변수 선언 방법


 javascript, dart 등 특정 언에서 사용이 가능했던 var 변수를 Go언어에서도 사용이 가능했는데 

 

타입을 명시할 때에도 Go는 다른 언어들과의 차이점이 있었습니다.

 

Dart,Java,C# vs Golang )

Dart,Java,C# Golang
[타입] [변수명]
예시) int count;
var [변수명] [타입]
예시) var count int

 

 

그러면 Go에서는 변수 선언 방식이 타입을 명시하는 방법 밖에 없나?

 

아닙니다.

 

Go는 타입을 추론하는 기능이 있기 때문에 

// 타입을 명시한 변수 선언 방법
var a int = 0

// 타입을 명시하지 않고 변수 선언 방법

var a = 0

 

두 가지다 int로 선언 됩니다.

 

* 참고 : 사용하지 않는 변수 및 패키지는 Golang에선 컴파일 타임에서 에러로 처리됩니다.

 

 

여기서 특이한 변수 선언방법이 한가지 더 있는데,

[변수명] := [데이터] 

해당 방식으로 변수를 선언하면 var 생략이 가능합니다. 

(단, 함수 내에서만 해당 형태로 선언이 가능합니다.)



func sum() {
	//var count = 10 or var count int = 10 하고 동일한 결과
    sum := 0
    count := 10
    for i := 0; i < count ; i++ {
    	sum++;
    }
    
}

 

 

상수


상수는 변수를 선언하는 방법과 큰차이는 없습니다.

 

변수를 선언할때는 var를 사용했다면 상수는 var 대신에 const로 사용하시면 됩니다.

 

const [변수명] [타입] (타입 생략가능)

 

또한 상수는 한번에 여러개를 선언할 수 있습니다.

const (
	name = "도형"
	shape = "Hexagon"
)

 

상수를 0, 1, 2 ... 차례대로 값을 주고 싶을 경우에는 

const (
	Apple = iota
    Banna
    Melon
)

// 이러면 Apple = 0, Banna = 1, Melon = 2 라는 값이 들어갑니다.