Go는 정적 타입 언어로, 변수를 선언하는 여러 방법이 있습니다. 가장 흔한 것은 타입을 추론하는 짧은 선언 :=입니다. Go의 기본 타입은 숫자, 문자열, 불리언 등을 포함합니다.
변수 선언
x =
y =
z
name :=
count :=
a, b = ,
Pi =
:=는 함수 내부의 관용적인 방법으로, 타입 추론과 함께 간결합니다. var는 패키지 수준에서, 그리고 명시적 타입이나 제로값만 원할 때 사용합니다.
// 정수
int, int8, int16, int32, int64 // 부호 있음(int는 플랫폼 크기, 보통 64비트)
uint, uint8, ..., uint64 // 부호 없음
byte // uint8의 별칭
rune // int32의 별칭 — 유니코드 코드 포인트
// 부동소수점
float32, float64 // float64가 소수의 기본값
// 기타
string // 불변 UTF-8 텍스트
bool // true / false
complex64, complex128 // 복소수
var i int // 0
var f float64 // 0.0
var s string // "" (빈 문자열)
var b bool // false
var p *int // nil
Go의 핵심 기능: 선언된 모든 변수는 자동으로 합리적인 제로값을 갖습니다 — 정의되지 않은/쓰레기 값이 없습니다. 이는 코드를 더 안전하게 만들고, 명시적 초기화를 생략할 수 있게 해줍니다.
var i int = 42
var f float64 = float64(i) // 반드시 명시적 변환 — 암묵적 강제 변환 없음
var u uint = uint(f)
// i + f → ❌ 컴파일 오류: 타입 불일치
Go는 명시적 타입 변환을 요구합니다 — 타입을 절대 암묵적으로 섞지 않아, 일련의 미묘한 버그를 방지합니다.
Go의 변수 선언과 타입을 이해하는 것은 어떤 Go 코드를 작성하든 기본입니다.
관용적인 := 짧은 선언과 추론은 코드를 간결하게 유지하며, var와 상수는 각자의 역할을 합니다.
제로값 보장(모든 변수가 안전하게 초기화됨)은 초기화되지 않은 변수 버그를 제거하고 관용적 패턴(예: 제로값 구조체가 종종 바로 사용 가능)을 형성하는, Go의 독특하고 중요한 기능입니다.
그리고 Go가 명시적 타입 변환(암묵적 강제 변환 없음)을 고집하는 것은 다른 언어가 허용하는 종류의 조용한 수치 버그를 방지하는 의도적인 안전 선택입니다.
기본 타입(특히 유니코드를 위한 rune, byte, 그리고 int/float64가 기본값이라는 점)을 아는 것은 필수적인 일상 지식입니다.
주니어부터 시니어까지 상세한 답변이 포함된 IT 면접 질문 라이브러리.
후원하기