🔥 타입 변환

240자
3분

Go 언어에서는 서로 다른 타입 간의 할당을 위해서는 명시적인 형 변환이 필요합니다. 표현식 T(v)는 값 v를 타입 T로 변환합니다.

숫자 타입 간의 변환 예시를 살펴보겠습니다:

go
var i int = 42
var f float64 = float64(i)
var u uint = uint(f)
 
go
var i int = 42
var f float64 = float64(i)
var u uint = uint(f)
 

또는 더 간단하게 표현하면:

go
i := 42
f := float64(i)
u := uint(f)
 
go
i := 42
f := float64(i)
u := uint(f)
 

C 언어와 달리, Go에서는 서로 다른 타입 간의 할당에는 명시적인 형 변환이 필요합니다. 예제에서 float64 또는 uint 변환을 제거하고 어떤 일이 일어나는지 살펴보세요.

실제 코드 예제를 통해 형 변환을 어떻게 사용하는지 자세히 알아보겠습니다:

go
package main
 
import (
    "fmt"
    "math"
)
 
func main() {
    var x, y int = 3, 4   // x와 y를 int 타입으로 선언하고 각각 3과 4로 초기화합니다.
    var f float64 = math.Sqrt(float64(x*x + y*y))   // x*x + y*y 계산 결과를 float64로 변환하여 math.Sqrt 함수에 전달합니다.
    var z uint = uint(f)   // f를 uint 타입으로 변환하여 z에 할당합니다.
    fmt.Println(x, y, z)   // x, y, z 값을 출력합니다.
}
 
go
package main
 
import (
    "fmt"
    "math"
)
 
func main() {
    var x, y int = 3, 4   // x와 y를 int 타입으로 선언하고 각각 3과 4로 초기화합니다.
    var f float64 = math.Sqrt(float64(x*x + y*y))   // x*x + y*y 계산 결과를 float64로 변환하여 math.Sqrt 함수에 전달합니다.
    var z uint = uint(f)   // f를 uint 타입으로 변환하여 z에 할당합니다.
    fmt.Println(x, y, z)   // x, y, z 값을 출력합니다.
}
 

위 코드에서는 xyint 타입으로 선언하고 각각 3과 4로 초기화합니다. 그 다음, x*x + y*y 계산 결과를 float64 타입으로 변환하여 math.Sqrt 함수에 전달합니다. math.Sqrt 함수는 제곱근을 계산하여 float64 타입의 결과를 반환하는데, 이를 다시 uint 타입으로 변환하여 z에 할당합니다. 마지막으로 fmt.Println을 사용하여 x, y, z 값을 출력합니다.

이렇게 Go 언어에서는 서로 다른 타입 간의 변환을 명시적으로 처리해야 합니다. 타입 변환을 잘 활용하면 다양한 계산과 할당을 수행할 수 있습니다. 형 변환 시에는 데이터 손실이 발생할 수 있으므로 주의해서 사용해야 합니다.

YouTube 영상

채널 보기
모듈과 프로바이더 | NestJS 가이드
Haskell로 배우는 Writer 모나드 | 클라이슬리 카테고리 마지막편 | 프로그래머를 위한 카테고리 이론
Writer 카테고리 구현 해 보기 | 크라이슬리 카테고리 3편 | 프로그래머를 위한 카테고리 이론
합타입 + 곱타입 = 강력한 타입 시스템? 대수적 데이터 타입의 비밀 | 프로그래머를 위한 카테고리 이론
NestJS 프로바이더와 @Injectable 데코레이터 | NestJS 가이드
관계로 정의하는 곱과 쌍대곱의 기초 | 프로그래머를 위한 카테고리 이론
동적 모듈 이해하기 | NestJS 가이드
합타입 - Either, Maybe, List | 프로그래머를 위한 카테고리 이론