> 백엔드 개발 > Golang > Go에서 Int64를 Int로 안전하게 변환하는 방법은 무엇입니까?

Go에서 Int64를 Int로 안전하게 변환하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-15 07:07:02
원래의
585명이 탐색했습니다.

How to Safely Convert Int64 to Int in Go?

Go에서 Int64를 Int로 변환: 가이드

유형 변환은 프로그래밍에서 일반적인 작업이며 Go에서는 변환이 간단합니다. 두 정수 유형 사이. 정확하고 효율적인 변환을 위해서는 int와 int64의 차이점을 이해하는 것이 중요합니다.

과제

int64(64비트 정수) 및 int(32- 비트 정수) Go에서 개발자는 이 두 유형의 값을 비교해야 할 필요성에 직면할 수 있습니다. 그러나 int64를 int로 변환하는 것은 까다로울 수 있습니다. 직접 비교하면 오버플로나 언더플로로 인해 예상치 못한 결과가 발생할 수 있기 때문입니다.

예를 들어, 일반적인 실수는 다음과 같이 int64 값을 int로 직접 변환하는 것입니다. 제공된 코드 조각:

for a := 2; a < maxInt; a++ {
    if isPrime(a) {
        if base.N % a == 0 {
            base.Result = a
        }
    }
}
로그인 후 복사

여기서 maxInt는 int64 값이고 루프 조건(a < maxInt)은 int32(a)를 int64와 비교하려고 시도합니다. 이는 잘못된 결과로 이어질 수 있습니다.

해결책

Go에서 int64 값을 int와 정확하게 비교하려면 int 유형을 int64로 변환하는 것이 올바른 접근 방식입니다. 이렇게 하면 두 값이 동일한 유형이 되어 오버플로 또는 언더플로의 위험이 제거됩니다.

for a := 2; a < int64(maxInt); a++ {
    if isPrime(a) {
        if base.N % a == 0 {
            base.Result = a
        }
    }
}
로그인 후 복사

a를 int64로 캐스팅하면 루프 조건이 int64 값을 다른 int64 값과 올바르게 비교하여 적절한 비교를 보장합니다. .

추가 참고 사항

이 유형 변환을 수행할 때 오버플로 또는 언더플로의 가능성을 고려하는 것이 중요합니다. 변환된 값이 대상 유형에 비해 너무 크면 오버플로가 발생하여 잘못된 값이 발생할 수 있습니다. 반대로 변환된 값이 너무 작으면 언더플로가 발생하여 값이 하한값으로 잘릴 수 있습니다.

위 내용은 Go에서 Int64를 Int로 안전하게 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿