※ 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
)
}