스터디/Go

[Go 언어 학습기 #3] Go 언어(Golang) 의 변수가 갖는 속성과 사용법 알아보기

황동리 2025. 11. 30. 18:43
반응형


이 글은 Must Have Tucker의 Go 언어 프로그래밍 책을 참고하여 작성하였으며, 개인적인 학습 내용을 정리한 글입니다.

변수란?

프로그래밍에서 변수(variable)는 값을 저장하는 메모리 공간을 가리키는 이름 입니다.


따라서 변수를 이용하면 쉽고 효과적으로 메모리에 있는 데이터를 조작할 수 있습니다.

변수 선언

먼저 변수를 사용하려면 변수를 선언해야 합니다.


변수 선언은 컴퓨터에게 값을 저장할 공간을 마련하도록 명령을 내립니다. 이것을 메모리 할당이라고도 부릅니다.


변수 선언하는 방법을 보면 아래와 같습니다.

var a int = 10
 1  2  3    4 

1. 변수 선언 키워드
: var는 변수의 영문인 variable의 약자로서 변수 선언을 알리는 키워드 입니다.
2. 변수명
: var 뒤에 a 라고 이름을 적으면 변수 이름을 a 라고 선언하는 것 입니다.
3. 타입
: 변수의 타입을 적어줍니다. 타입과 관련된 자세한 사항은 뒤에서 보겠습니다.
4. 초깃값
: 대입 연산자 "=" 를 적어주어 변수의 초깃값을 적어 줍니다.

변수의 4가지 속성

변수는 다음 4가지 속성을 가집니다.

  • 이름: 프로그래머는 이름을 통해 값이 저장된 메모리 공간에 손쉽게 접근할 수 있습니다.
  • 값: 변수가 가리키는 메모리 공간에 저장된 값입니다.
  • 주소: 변수가 저장된 메모리 공간의 시작 주소를 말합니다.
  • 타입: 변숫값의 형태를 말합니다. 정수 타입, 실수 타입, 문자열 등의 다양한 타입이 존재합니다.
var a int = 10

# 위와 같은 방식으로 변수를 선언 할 때,
"a" 는 이름
"int" 는 타입
"10" 은 값

또한 변수명을 지어줄 때는, 문자, _, 숫자 를 사용해 지을 수 있지만 첫 글자는 반드시 문자_로 시작해야 합니다.


마지막으로 _ 를 제외한 다른 특수문자는 변수명에서 사용할 수 없습니다.


아래는 올바른 예시와 그렇지 않은 예시 입니다.

  • 올바른 예시: abc, a123, _abc
  • 올바르지 않은 예: 123, 1abc, $abcd

그리고 변수명을 지어줄 때 반드시 지켜야하는 것은 아니지만 아래와 같은 권장 사항이 있습니다.

  • 변수명은 영문자를 제외한 다른 언어의 문자를 사용하지 않습니다.
  • 변수명에 여러 단어가 이어질 시, 두 번째 단어부터는 대문자로 시작
    ex) firstName, tuckersGolsAwesome
  • 변수명은 되도록 짧게

다양한 변수 선언의 형태

Go 언어에서는 프로그래머의 편의를 위해 여러 형태의 변수 선언을 지원 합니다.


간단한 코드로 예시를 살펴보면,

package main

import "fmt"

func main() {
    var a int = 3    // 기본 형태
    var b int        // 초깃값 생략, 초깃값은 타입별 기본값으로 대체
    var c = 4        // 타입 생략, 이 때 변수의 타입은 우측의 값(4)의 타입으로 자동으로 선언됩니다.
    d := 5            // 선언 대입문 := 을 이용하여 var 키워드와 타입 생략
}

  • 타입별 기본 값 을 보면 아래 표의 내용과 같습니다.
타입 기본값
모든 정수 타입 (int8, int16, int32....) 0
모든 실수 타입 (float32, float63, complex64, complex128) 0.0
boolean false
문자열 ""(빈 문자열)
그 외 nil(정의되지 않은 메모리 주소를 나타내는 Go 키워드)
  • 선언 대입문 :=

선언 대입문이란 말 그대로 선언과 대입을 한꺼번에 하는 구문 입니다.

c := 365             // c는 int 타입, 값은 365
s := "hello world"  // s는 string 타입, 값은 hello world

변수의 범위

변수는 자신이 속한 중괄호 {} 범위를 벗어나면 사라집니다.


간단한 코드 예제로 알아보겠습니다.

package main

import "fmt"

var g int = 10    // 전역 변수 선언, main package 어디서든 사용할 수 있는 변수

func main() {
    var m int = 20 // 지역 변수 선언, main() 함수 안에서만 사용할 수 있는 변수

    {
        var s int = 50 // 지역 변수 선언, 현재 중괄호 안에서만 사용할 수 있는 변수
        fmt.Println(m, s, g) // 20, 50, 10
    }

    m = s + 20 // s 변수 때문에 Error 나옴
}



이상 입니다.


감사합니다.

반응형