티스토리 뷰

Programming Language/Go

[Go] 변수와 상수

SdardewValley 2021. 10. 12. 17:23
반응형

변수 선언

var 변수명 타입

go에서 변수를 선언할 때는 var 키워드를 사용하고 변수명 타입 순서대로 선언한다.

 

이렇게 선언을 하면 변수를 X 타입으로 선언한다라고 읽는 점에서 자연스럽다는 장접이 있다.

 

go에서 변수 값을 지정하지 않으면 기본 값으로 0이 지정된다. (문자열도 기본값이 지정되는데 ""이 저장된다)

 

 

var 변수명1, 변수명2, 변수명3 타입

같은 타입이면 ,(콤마)를 사용하여 여러 개의 변수를 한번에 선언할 수 있다.

 

var (
    변수명1 타입1
    변수명2 타입2
    변수명3 타입3
)

한번에 여러 개의 다른 타입의 변수를 선언할 때는 (소괄호)를 사용하여 선언할 수 있다.

 

var v1 = true
var v2 = uint16(6)

변수 선언과 동시에 값을 할당하면 타입을 지정하지 않아도 된다. 아니면 값을 변환해서 바로 할당해도 된다.

 

v := 1

혹은 위와 같이 var를 생략하고 := 연산자를 사용해서 선언과 동시에 값을 할당하는 짧은 선언을 할 수 있다.

 

이런 짧은 선언은 제약이 있다. 함수 안에서는 사용 가능하지만, 전역 변수를 선언할 때는 사용이 불가능하다.

 

 

변수 이름

  • 공백을 포함하지 않은 문자, 숫자, 언더바(_)를 사용할 수 있음
  • 숫자는 첫글자로 사용할 수 없음
  • 대소문자를 구분
  • 유니코드 문자도 사용 가능 (예: var π float32)
  • 변수 이름으로 키워드와 예약어를 사용할 수 없음

 

키워드
예약어

💡키워드 VS 예약어

키워드는 문법으로 사용되는 단어로 언어에서 특별한 의미가 있다.

예약어는 언어에 의해 예약 되어 식별자(변수명, 함수명 ....)로 사용할 수 없는 단어이다.
💡변수 이름 표기법

변수 이름에 언더바(_)를 사용할 수 있지만, 카멜 표기법으로 하는 것이 권장된다.
💡Getter & Setter

자바의 getter는 앞에 get을 붙인다. Go에서 getter는 Get접두어를 붙이지 않는다.
- GetObject ❌
- Object ⭕️

Go에서 setter는 Set을 붙인다.
-SetObject ⭕️

 

 

상수

go에서 상수는 const 키워드를 사용한다.

 

상수를 선언할 때 타입을 선언하지 않아도 된다.

 

상수는 컴파일 할 때 값이 결정된다, 따라서 컴파일 할 때 결정되지 않는 값(입력을 받아야 하는 경우와 같은)은 상수값으로 불가능하다.

 

(소괄호)를 사용하여 여러 개의 상수를 한 번에 선언할 수 있다.

const (
    RED = 0
    ORANGE = 1
    YELLOW = 2
)

 

 

열거형

열거형은 1씩 증가하는 상수의 집합이다.

 

go에서는 상수와 열거형에 차이를 두지 않는다. go에서는 여러개의 상수를 한번에 선언하는 방식으로 열거형을 표현한다.

 

 

const (
    One = 1
    Two = 2
    Three = 3
)

 

iota 예약어를 사용하여 열거형을 선언할 수 있다. iota의 값은 0이고 그 이후로 1씩 증가한다.

const (
    Zero = iota // 0
    One // 1
    Two // 2
    Three // 3
)

 

iota는 부동소수점 타입, 계산식에도 사용할 수 있다.

type ByteSize int64

const (
	_ = iota
    KB ByteSize = 1 << (10 * iota) // 1 << (10 * 1) = 1024
    MB // 1 << (10 * 2)
    GB
    TB
    PB
    EB
)

const (
	V0 = 0.1 * iota // 0.0
    V1 // 0.1 * 1 = 0.1
    V2 // 0.2
)

 

 

<참고>

https://thebook.io/006806/

 

더북(TheBook): Go 언어 웹 프로그래밍 철저 입문

 

thebook.io

https://stackoverflow.com/questions/1078908/what-is-the-difference-between-keyword-and-reserved-word

 

What is the difference between "keyword" and "reserved word"?

What's the difference between a keyword and a reserved word? For example, in the proposal for concepts in C++ one can read the following statement: This proposal introduces five new keywords:

stackoverflow.com

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함