본문 바로가기

Golang

Golang, variable

※ go는 선언하고 사용하지 않는 변수에 대해서 error를 출력한다

(declared but not used)

 

변수 선언

package main

// str4 := "string4" 이거는 안됨
func main() {
	var str1 string = "string1"
	println(str1)
    
	str2 := "string2" //var 생략 가능(type inference)
	println(str2)
    
	var str3 ="string3"
	println(str3)    // type inference
}

 

'var'

  • 함수 안과 밖에서 모두 사용 가능
  • 변수 선언과 값 할당을 분리할 수 있음(대신 타입은 명시)

 

':='

  • 함수 안에서만 사용 가능함
  • 변수 선언과 값 할당의 분리가 안됨
  • 타입을 추론함
func seperate(){
	//선언과 할당을 따로 할려면 
	var num int // 타입을 명시해야 한다
	num = 1
	println(num)
}

 

변수 선언과 할당을 따로 하기 위해선 타입을 명시 후 선언해야 한다. 아니면 error

 

초기화

package main

func main() {
	var str string       //string은 ""
	var num int          //int는 0
	var boolean bool     //bool은 false
	var float_32 float32 //float_32는 +0.000000e+000
	var float_64 float64 //float_64는 +0.000000e+000

	println(str, num, boolean, float_32, float_64)
}

모든 type은 값을 설정하지 않으면 기본값으로 설정된다.

string은 ""

int는 0

bool은 false

float32와 float64는 +0.000000e+000

 

다중 선언

package main

func main() {
	a, b, c, d := 1, 2, 3, 4
	// 개수는 같아야하고
	println(a,b,c,d)

	// 타입은 같을 필요 없음
	str, num := "strings", 100
	println(str, num)
	
    // var()안에 변수 선언 시 가독성 증가
    
	// 값 할당
	var(
		string1 = "String1"
		string2 = "String2"
		string3 = "String3"
	)
	println(string1, string2, string3)

	// 초기값 사용
	var(
		str1 string
		str2 string
		num1 int
		bo1 bool
	)
	println(str1,str2,num1,bo1)

	/* 이거는 안됨
	var(
		str1 := "str1"
		str2 := "str2"
		str3 := "str3"
	)
	*/
}

다중 선언시 변수와 값은 수 일치를 시켜줘야 하지만, 각 변수의 타입이 모두 같을 필요는 없다.

 

 

상수 const

const는 한번 선언했을 때, 변경이 불가능한 변수를 의미하며, 초기화 값(num int 했을 때 값이 0)은 사용이 불가능하다.

변수 앞에 const 키워드를 붙혀서 사용할 수 있으며 이때, var은 따로 사용하지 않는다.

func ex4(){
	//const 사용 시 var은 사용하지않음 
	// 선언 시 무조건 값 지정(초기화 값 사용 불가)
	const num1 int = 1
	const num2 = 2 // type inference
    
    // 다중 선언 가능
	const(
		num3 = 3
		num4 = 4
		num5 = 5
		num6 int = 6

	)
}