Connecting

Go 언어에서 변수 설정하기 본문

Go 언어

Go 언어에서 변수 설정하기

팬도라 2020. 7. 7. 13:08
반응형

변수 설정하기

Go 언어는 기본적으로 var키워드를 사용해서 변수를 선언할 수 있고, 자료형을 생략하거나 추가할 수 있습니다. Go 언어는 기본적으로 변수 타입을 추론하기 때문인데 다음과 같은 예제를 살펴보도록 하겠습니다.

var name string // 변수 name은 문자열이다. 
var age int 

var title string = "Golang" // 변수 title은 문자열이며, golang 문자열을 초기화(대입) 한다. 
var number int = "30"

일반적인 언어와 다르게 Go 언어의 경우 자료형이 뒤에 오기 때문에 다른 언어를 접하신 분들이 Go 언어를 접하게 되면 어색하게 느껴질 수 있습니다. 하지만 가만히 살펴보면 사람이 글자를 쓰는 방식과 비슷하기 때문에 가독성에서 뛰어나다고 할 수 있습니다.

이번에는 뒤에오는 자료형을 생략해 보겠습니다.

var name // 컴파일 에러

var title  = "Golang" // 변수 title은 문자열이며, golang 문자열을 초기화 한다. 
var number = "30"

위와 다르게 자료형을 생략했으나 우리는 해당 변수의 형태를 통해 어떠한 변수가 대입되는지 확인할 수 있습니다. 이것을 타입추론이라고 부릅니다. 하지만, 자료형이 생략된 상태에서 변수가 선언되는 경우 어떠한 자료형이 대입될지 알 수 없기 때문에 개발자의 실수를 방지하기 위해서 초기화 하지 않는 변수의 경우 Go 컴파일러가 에러를 발생합니다.

다음은 변수를 선언하고, 선언된 변수를 출력하는 예제 입니다.

package main

import f "fmt"

func main() {
    name := "seongwon" // 선언과 동시에 변수를 초기화 할 수 있습니다. 이 경우 축약된 문법을 사용할 수 있습니다. 
    age := 27

    var title string = "Golang"
    var number int = 30

    f.Println(name, age, title, number)
}

Go 언어에서는 한번에 여러 변수 값을 초기화 하거나 상수를 설정하고, iota를 사용하여 규칙적으로 값을 증가시킬 수 있습니다.

var ( // 변수 i, b, s 는 정수, boolean, 문자열이다. 
    i int
    b bool
    s string
)

var name, title, num1, num2 = "seongwon", "golang", 1, 2 // 각 변수에 순서대로 값을 대입한다. 이때 타입은 초기화된 변수의 형태를 통해 결정된다. 
const NICKNAME = "lucas"

const (
    GO = iota // 여러 상수를 열거하고, 0부터 1씩 값을 증가시킨다. 
    JAVA
    PYTHON
    C
)

iota를 사용하면 단순히 값을 1씩 증가시키며 사용하는 것 이외에 다음과 같이 변형하여 사용할 수 있습니다.

const (
    _ = iota // 0 -> 무시
  KB ByteSize = 1 << (10 * iota) // << 연산자는 비트를 1만큼 쉬프트 합니다. 따라서 본 구문은 2의 10이기 때문에 1024가 됩니다. 
  MB
  GB
  TB
  PT
  EB
)

다음 예제를 통해서 위에서 설명한 코드가 정상적으로 동작하는지 확인하세요.

package main

import f "fmt"
type ByteSize uint64

var (
    i int
    b bool
    s string
)

var name, title, num1, num2 = "seongwon", "golang", 1, 2

const NICKNAME = "lucas"

const (
    GO = iota // 여러 상수의 값을 0부터 1씩 값을 증가시킨다.
    JAVA
    PYTHON
    C
)

const (
    _ = iota // 초기값이 0이기 때문에 버린다. 
    KB  ByteSize = 1 << (10 * iota) // << 연산자는 비트를 이동시킨다. 본 문법에서는 1을 왼쪽으로 10번 이동하므로 2의 10승은 1024가 됩니다.
    MB
    GB
    TB
    PT
    EB
)

func main() {
    i, b, s = 1, true, "example"

    f.Println(i, b, s)
    f.Println("nickname : ", NICKNAME)
    f.Println(name, title, num1, num2)

    f.Println(GO, JAVA, PYTHON, C)

    f.Println(KB, MB, GB, TB, PT, EB)
}
Comments