>백엔드 개발 >Golang >Golang에서 정수 변환을 수행하는 방법

Golang에서 정수 변환을 수행하는 방법

PHPz
PHPz원래의
2023-04-25 18:28:44999검색

코드를 작성할 때 데이터 유형을 변환해야 하는 경우가 많습니다. 이러한 변환은 일반적으로 문자열을 정수 또는 부동 소수점 숫자로 변환하거나 정수를 문자열로 변환하는 등 다양한 데이터 유형 간에 수행됩니다. Golang에서는 정수 변환이 특히 중요합니다. 이번 글에서는 Golang에서 정수 변환을 수행하는 방법과 관련 주의사항을 소개합니다.

Golang은 다양한 크기의 정수 유형 간 변환을 지원합니다. 예를 들어 uint8을 int8로 변환하고 int64를 uint8로 변환할 수 있습니다. 다만, 타입 변환은 대상 타입의 표현 범위가 변환된 값의 값 범위를 완전히 포함할 수 있는 경우에만 수행될 수 있다는 점에 유의해야 한다.

예를 들어 int16(32767)의 최대값을 int8로 변환하면 데이터 오버플로가 발생하여 결과가 음수가 될 수 있습니다. 마찬가지로, 부동 소수점 숫자 리터럴 123.45(float64 유형으로 해석됨)를 uint16으로 변환하면 소수 부분이 손실되고 잘린 정수 값을 얻습니다.

다음은 Golang에서 정수 변환을 수행하는 방법을 보여주는 몇 가지 예입니다.

package main

import (
    "fmt"
    "math"
)

func main() {
    // 将int转换为float
    a := 10
    b := float64(a)
    fmt.Printf("a=%d, b=%f\n", a, b)

    // 将float转换为int
    c := 3.14159
    d := int(c)
    fmt.Printf("c=%f, d=%d\n", c, d)

    // 将uint64转换为int32
    const maxUint64 = math.MaxUint64
    var e uint64 = maxUint64
    f := int32(e)
    fmt.Printf("e=%d, f=%d\n", e, f)

    // 将int8转换为uint8
    var g int8 = -12
    h := uint8(g)
    fmt.Printf("g=%d, h=%d\n", g, h)
}

위의 예에서는 int 유형의 변수 a를 float64로 변환하고 float64 유형의 변수 c를 int 유형으로 각각 변환합니다. 변수 e를 int32로 입력하고 int8 유형 변수 g를 uint8로 변환합니다. 각각의 경우에 초기 값과 변환된 결과를 인쇄했습니다. 부호 없는 정수 유형(예: uint8, uint16 등)의 범위를 부호 있는 유형으로 변환하기 전에 신중하게 고려해야 합니다. 원래 값이 대상 유형의 양수 표현 범위를 초과하면 결과는 음수가 됩니다.

명시적 변환 외에도 Golang은 암시적 정수 변환도 제공합니다. 어떤 경우에는 암시적 변환을 수행하면 코드가 더 깔끔해질 수 있지만 다른 경우에는 주의가 필요합니다.

예를 들어, 덧셈, 뺄셈, 곱셈 또는 왼쪽 시프트 연산을 위해 부호 있는 정수 유형(예: int8)의 변수와 다수의 부호 없는 정수 유형(예: uint8)을 사용하는 경우 후자는 동일한 부호 있는 정수 유형으로 변환됩니다. 변수는 전자의 기호 유형입니다. 이 변환을 통해 코드를 더 읽기 쉽게 만들고 오버플로도 방지할 수 있습니다. 그러나 다른 연산자를 사용할 때는 변환 명령을 명시적으로 발행해야 합니다.

Golang에는 정수 변환에 대한 "암시적 규칙"이 있습니다. 예를 들어, 연산자를 사용하여 서로 다른 크기의 두 정수 유형을 더하거나 빼는 경우 Golang은 자동으로 이를 동일한 유형으로 변환하고 필요한 경우 부호 확장합니다. 그러나 정수 유형을 다른 유형의 변수(예: 문자열 또는 인터페이스 유형)에 할당하는 경우 필요한 유형으로 명시적으로 변환해야 합니다.

요약:

  • Golang에서는 정수 값을 서로 변환할 수 있지만, 대상 유형의 범위는 소스 값의 범위를 수용할 수 있을 만큼 커야 합니다.
  • 명시적 또는 암시적 정수 변환을 사용할 수 있지만 후자는 예상치 못한 변환 오류를 방지하기 위해 주의해서 사용해야 합니다.
  • 정수 변환을 수행할 때, 특히 정수 유형의 부호 있는 특성과 부호 없는 특성을 고려할 때 몇 가지 기본적인 수학적 지식이 필요합니다.

위 내용은 Golang에서 정수 변환을 수행하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.