Chapter 3. 변수

3199 단어 goprogramminggo

오늘은 변수를 선언하고 정의하는 것에 대해 배워보도록 하겠다.

  • 선언: 코드 일부로서 변수나 함수가 있음을 알려주는 것
  • 정의: 코드 일부로서 변수나 함수가 무엇인지 알려주는 것
    쉽게 말해 선언은 변수의 자료형이나 이름까지만 기입한 상태이고 정의는 그 변수에 값을 넣는 행위를 말한다고 볼 수 있다.

1. 변수 선언 방식

Golang은 변수의 선언 방식이 다양하게 존재한다.
또한, C, C++, JAVA와 같이 자료형을 변수 형태에 맞게끔 미리 고르는 방식이 아니라 Python처럼 대입되는 값에 맞는 자료형을 스스로 결정하는 형태로 구성되어 있다.

그럼 예시를 통해 변수를 선언하는 방식에 대해 좀 더 알아보도록 하겠다.

전체코드

package main

import "fmt"

func main() {

	// Case 1 - ':='를 사용하면 var 입력 없이 간단히 변수 선언 가능
	/*
		a, b := 10, 5

		fmt.Println("a: ", a)
		fmt.Println("b: ", b)
	*/

	// Case 2 - 자료형 선언 후, 값 대입
	/*
		var a, b int
		a = 10
		b = 20

		fmt.Println("a: ", a)
		fmt.Println("b: ", b)
	*/

	// Case 3 - 복수 변수 [같은 자료형]
	/*
		var a, b int = 30, 40

		fmt.Println("a: ", a)
		fmt.Println("b: ", b)
	*/

	// Case 4 - 복수 변수 [다른 자료형]

	var (
		a, b int = 10, 20
		c, d     = "Hello", "World"
	)

	fmt.Println("a: ", a)
	fmt.Println("b: ", b)
	fmt.Println("c: ", c)
	fmt.Println("d: ", d)

}

1-1 '!=' 활용하기

Case 1. '!='를 활용한 변수 선언

a, b != 10, "Hello"

위와 같이 '!='를 사용할 경우, var 사용 없이 간단하게 변수의 선언과 정의를 동시에 할 수 있다.
개인적으로 제일 손쉽게 사용할 수 있는 방식인 것 같다.

1-2 자료형 선언 후, 값 대입

Case 2. (선) 자료형 선언 / (후) 값 대입

var a, b int

a = 10
b = 5

위 예시는 변수를 선언과 동시에 정의하지 않을 때 사용할 수 있다.
먼저 var a,b int를 통해 int형으로 a, b를 만든다.
이후, a에 10, b에 5를 대입한다.

  • 주의할 점: Case 1에서 사용한 '!='이 아니라 '='을 사용하는 것!!!!

1-3 복수 변수 [ft. 동일 자료형]

Case 3. 복수 변수 사용

  • 아래 예시는 서로 같은 Type일 경우만 사용 가능
var a, b int = 10,20

위의 방식은 1-2 경우처럼 자료형을 먼저 선택하여 사용하는 방식이다.
다른 점이라 하면 1-2 경우는 값을 이후에 대입했지만 현재는 선언과 동시에 값을 대입한다.
사용할 변수들이 모두 같은 자료형일 때 사용할 수 있기 때문에 사용 전, 같은 자료형인지 확인 필요

1-4 복수 변수 [ft. 다른 자료형]

Case 4. 복수 변수 사용

  • 아래 예시는 서로 다른 Type일 경우에도 사용 가능
var (
	a, b int = 10, 20	// 자료형 기재 O
    	c, d = 30, "Hello"	// 자료형 기재 X

위의 방식은 1-3의 확장판이라 볼 수 있다.

  • 첫번째: int라는 Type을 미리 기재함으로서, a, b에 들어올 수 있는 값을 정수형으로 제한
  • 두번째: Type을 기재하지 않음으로서, 들어오는 값에 따라 자료형 자동 변환

사용하고자 하는 변수가 복수개이며 Type이 다를 경우, 사용 용이

마무리

오늘은 변수를 선언하고 정의하는 방법에 대해 배워보았다.
가장 특이한 점이라 함은 ':="라는 기호를 통해 변수를 초기화 시키는 방법이 있다는 부분이었다. Golang만의 새로운 것을 한가지 배우게 된 것 같아 기분이 좋다 :)

전체 소스 git링크
https://github.com/cho876/Go/blob/main/Prac03/prac03.go

좋은 웹페이지 즐겨찾기