Go Short Variable Declaration

web comdori·2021년 3월 17일
0

write-in-go

목록 보기
4/4

참고자료

Short Varaible Declaration Operator(:=)

연산자 := 는 var 키워드 및 type을 생략하고 변수를 선언할 때 사용한다. 이 연산자의 주목적은 함수 내의 local 변수의 초기화 및 선언하고 변수의 스코프를 좁히기 위한 것이다. 변수의 타입은 식의 타입(오른쪽에 무엇이 있는가)에 따라 정의된다. 정리하면 go에서는 변수를 생성하는 두 가지 방법이 있다.

  • var 키워드 사용하는 방법
  • := 를 사용하는 방법

Short Variable Operator 사용 방법

변수이름 := 식 또는 값

var 키워드를 사용하면 선언과 초기화를 따로 할 수 있지만, :=를 사용하면 선언과 초기화를 동시에 해야한다.

예제

package main

import "fmt"

func main() {
	i := 5
	str := "Hello, World"
	fmt.Println(i)
	fmt.Println(str)
}

Short Declaration Operator를 사용하여 여러 개의 변수 선언하기

Short Declaration Operator를 사용하면 같은 타입 혹은 다른 타입의 변수를 한 번에 여러개 선언할 수 있다.

예제1 :

package main

import "fmt"

func main() {
	a, b, c := "Hello", 5, 2.4
	fmt.Printf("a : %s, type of a : %T\n", a, a)
	fmt.Printf("b : %d, type of b : %T\n", b, b)
	fmt.Printf("c : %f, type of c : %T\n", c, c)
}

결과 :

a : Hello, type of a : string
b : 5, type of b : int
c : 2.400000, type of c : float64

예제2 :

package main

import "fmt"

func main() {
	a, b := 1, 2
	a := 4           // error
	c, b := 3, 4     // Not error
	d, b := 5, "abc" // error

	fmt.Printf("%d, %T\n", a, a)
	fmt.Printf("%d, %T\n", b, b)
	fmt.Printf("%d, %T\n", c, c)
	fmt.Printf("%d, %T\n", d, d)
}
  • a := 4 가 에러인 이유는 이미 a가 한 번 선언된 상태이기 때문에 재선언을 할 수 없어서이다.
  • c, b := 3, 4가 에러가 아닌 이유는 b는 이미 선언되었지만, c는 한 번도 선언되지 않았기 때문에 c는 새로 선언하고, b는 값만 대입된다.
  • d, b := 5, "abc"가 에러인 이유는 d는 한 번도 선언되지 않았지만, b가 기존에 정수형 타입으로 이미 선언된 상태이기 때문에 타입을 바꿀 수 없어서 이다.

여러개의 리턴 값을 가지는 함수에도 := 연산자 사용이 가능하다.

package main

import "fmt"

func next(n int) (int, int) {
	return n + 1, n + 2
}

func main() {
	next1, next2 := next(1)
	fmt.Println(next1, next2)
}

지역(Local) 변수 / 전역(Global) 변수

:= 연산자는 block-level scope 를 가지는 지역 변수만 선언 가능하다. 일반적으로 지역 변수는 함수 block 내에서 선언된다. 만약 전역 변수를 :=로 선언하려고 하면 에러가 날 것이다.

package main

import "fmt"

a := 3 // error

func main() {
	b := 5 // Not error
}
profile
(wanna be a) Full-Stack Engineer

0개의 댓글