Golang - 변수

2 분 소요

변수란?

  • 변수는 값을 저장하는 메모리 공간이다. 변수를 사용해서 메모리에 접근하여 값을 조정할 수 있다.
  • 변수를 사용하려면 선언을 해야 하는데 변수 선언은 컴퓨테에게 값을 저장할 공간을 메모리에 마련하라고 명령을 내리는 것이다. -> 이를 메모리 할당이라고 한다.

변수 선언

var a int
var b string
var c, d, e int
var f, g, h int = 1, 2, 3
var i int = 1
var j string = "hi golang"
var num = 1
var str = "hohoho"
var m = true
var (
	name      string = "machine"
	height    int32
	weight    float32
	isRunning bool
)
name = "updated"
height = 456
weight = 33.33
isRunning = true
fmt.Println(name, height, weight, isRunning)
  • var 를 사용하면 타입지정과 함께 사용할 수 있다.
  • 선언만 하고 이후에 값 할당이 가능하다.
  • 동시에 여러개 선언 및 할당이 가능하다.

짧은 선언

shortVar1 := 3
// shortVar1 := 78 -> 불가
shortVar2 := "hihi"
shortVar3 := true
fmt.Println(shortVar1, shortVar2, shortVar3)
	if i := 3; i < 44 {
    fmt.Println("gooed", i)
}
  • 함수 안에서만 사용 가능하다. (전역x)
  • 선언 후 다시 할당할 수 없다.
  • 이 함수 안에서 사용되고 끝나면 메모리에서 지워진다.
  • if문에서 많이 쓰인다.

상수 선언

const aa = "dfdf"
const bb, cc int = 3, 4
const dd, ee, ff = true, 0.25, "df"
const (
    x, y  = 5, 9
	ii, k = 0.2, 0.639
)
  • 변수 선언과 동시에 값 할당까지 해야한다. ex) const a string -> x
  • 함수의 리턴값으로 값 할당이 안된다. ex) const a = getName() -> x

타입

package main

func main() {
	a := 3 // int
	var b float32 = 3.5 // float64

	var c int = b // error - float32 타입의 변수를 int타입에 대입 불가
	d := a * b // error - 다른 타입인 int 변수와 float32 연산 불가

	var e int8 = 7
	f := a * e // error - 같은 정수타입이라도 a는 int, e는 int8이므로 타입이 달라서 연산 불가 -> 매우 강력
	var g int = b * 3 // error - 실수가 정수로 자동으로 변환되지 않는다.
}
package main

import (
	"fmt"
)

func main() {
	a := 3
	var b float64 = 3.5

	var c int = int(b)
	d := float64(a * c)

	var e int64 = 7
	f := int64(d) * e

	var g int = int(b * 3)
	var h int = int(b) * 3
	fmt.Println(g, h, f, d) // 10, 9, 63, 9
  • golang은 매우 강력한 타입 언어이다. 자동 타입 변환을 지원하지 않기 때문에 연산이나 대입에서 타입변환을 해줘야 한다.
  • 숫자 타입은 크기에 따라 표현할 수 있는 값의 범위가 다르다. 특히 실수 타입은 유효 자릿수가 정해져 있어 주의해서 사용해야 한다.

카테고리:

업데이트:

댓글남기기