🔥 타입 추론

249자
3분

Go 언어에서는 변수를 선언할 때 명시적으로 타입을 지정하지 않고도 변수의 타입을 추론할 수 있어요. := 문법이나 var = 표현식 문법을 사용하면 변수의 타입이 우변의 값으로부터 추론된답니다.

우변이 타입을 가지고 있는 경우, 새로운 변수는 해당 타입과 동일한 타입을 가지게 되지요.

go
var i int
j := i // j는 int 타입
 
go
var i int
j := i // j는 int 타입
 

그런데 우변에 타입 없는 숫자 상수가 있는 경우, 새로운 변수는 상수의 정밀도에 따라 int, float64 또는 complex128 타입이 될 수 있어요.

go
i := 42           // int
f := 3.142        // float64
g := 0.867 + 0.5i // complex128
 
go
i := 42           // int
f := 3.142        // float64
g := 0.867 + 0.5i // complex128
 

코드의 주석을 살펴보면, 우변 값의 타입에 따라 변수의 타입이 어떻게 결정되는지 알 수 있답니다.

아래 예제 코드에서 변수 v의 초깃값을 바꿔보면서 v의 타입이 어떻게 영향을 받는지 관찰해 보세요.

go
package main
 
import "fmt"
 
func main() {
	v := 42 // 여기를 바꿔보세요!
	fmt.Printf("v의 타입은 %T\n", v)
}
 
go
package main
 
import "fmt"
 
func main() {
	v := 42 // 여기를 바꿔보세요!
	fmt.Printf("v의 타입은 %T\n", v)
}
 

코드를 실행해 보면 v에 할당한 값에 따라 출력 결과가 달라진다는 걸 확인할 수 있을 거예요.

가령 v := 42로 초깃값을 설정하면 vint 타입이 되고, 아래와 같은 출력 결과를 얻게 됩니다.

text
v의 타입은 int
text
v의 타입은 int

반면 v := 3.14로 초깃값을 설정하면 vfloat64 타입이 되어, 다음과 같은 출력 결과를 얻게 되죠.

text
v의 타입은 float64
text
v의 타입은 float64

마찬가지로 v := 0.867 + 0.5i와 같이 복소수 값을 할당하면 vcomplex128 타입이 된답니다.

text
v의 타입은 complex128
text
v의 타입은 complex128

이처럼 Go 언어에서는 변수 선언 시 명시적인 타입 지정 없이도 타입 추론을 통해 변수의 타입을 자동으로 결정할 수 있어요. 초깃값의 타입에 따라 변수의 타입이 유연하게 결정되니, 상황에 맞게 적절한 값을 할당하면 되겠죠?

YouTube 영상

채널 보기
우리가 매일 쓰는 맞춤법 검사기와 라우터 속에 숨겨진 알고리즘은? | Trie 자료구조 이야기
AI는 왜 수백 차원의 벡터를 사용할까? 고차원 공간과 행렬 | 선형대수학
마지막편, 트라이 노드를 50% 이상 줄이는 방법? 압축 트라이 성능 분석 | Trie 자료구조 이야기
Trie(트라이) 자료구조 원리와 파이썬 클래스 설계 및 구현 | Trie 자료구조 이야기
7편, 파이썬으로 구현하는 B-Tree
BTree 노드의 구조는?
트라이(Trie)에서 단어를 삭제하는 방법 | Trie 자료구조 이야기
숫자 하나가 AI 모델의 운명을 바꾼다? | 선형대수학