// 기본적인 변수 선언
var a int
a = 10
// 동시에 선언 및 초기화
var b int = 20
// 여러 변수를 한 번에 선언
var (
c int = 30
d string = "Hello"
)
// 짧은 선언(:=) - 함수 내부에서만 사용 가능
e := 40
변수 섀도잉(shadowing)
Go에서는 블록 스코프 내에서 동일한 이름의 변수를 선언할 경우, 바깥 스코프의 변수를 “가리는(Shadow)” 일이 발생합니다.
package main
import "fmt"
func main() {
x := 10
if true {
x := 20 // 바깥의 x를 가리는 새로운 x
fmt.Println(x) // 20 출력
}
fmt.Println(x) // 10 출력
}
const PI float64 = 3.14
const Greeting = "Hello, Go"
iota
iota는 특별한 상수 생성기(constant generator)로, 상수를 반복해서 열거하거나 여러 값을 단순히 1씩 증가시켜야 할 때 유용합니다.
const (
A = iota // 0
B // 1
C // 2
)
const (
_ = iota // 버림
KB = 1 << (10 * iota) // 1 << 10 -> 1024
MB = 1 << (10 * iota) // 1 << 20 -> 1048576
GB = 1 << (10 * iota) // 1 << 30 -> 1073741824
)
Go에는 크게 기본 타입(숫자형, 문자열, 불리언)과 복합 타입(배열, 슬라이스, 맵, 구조체, 포인터, 함수, 채널 등)이 있습니다.